当前位置:文档之家› ACM部分练习题目答案

ACM部分练习题目答案

ACM部分习题答案:A +B ProblemTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 100972 Accepted Submission(s): 33404Problem DescriptionCalculate A + B.InputEach line will contain two integers A and B. Process to end of file.OutputFor each case, output A + B in one line.Sample Input1 1Sample Output2# include<stdio.h>Int main(){int x,y,s;while(scanf("%d %d",&x,&y)!=EOF){s=x+y;printf("%d\n",s);}return 0;}Sum ProblemTime Limit: 1000/500 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 85964 Accepted Submission(s): 19422Problem DescriptionHey, welcome to HDOJ(Hangzhou Dianzi University Online Judge).In this problem, your task is to calculate SUM(n) = 1 + 2 + 3 + ... + n.InputThe input will consist of a series of integers n, one integer per line.OutputFor each case, output SUM(n) in one line, followed by a blank line. You may assume the result will be in the range of 32-bit signed integer.Sample Input1100Sample Output15050# include<stdio.h>int main(){int n;long int s;while(scanf("%d",&n)!=EOF){ s=0;while(n>0){s=s+n;n--;}printf("%ld\n\n",s);}return 0;}A +B Problem IITime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 58216 Accepted Submission(s): 10500Problem DescriptionI have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.InputThe first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.OutputFor each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.Sample Input21 2112233445566778899 998877665544332211Sample OutputCase 1:1 +2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110#include<stdio.h>#include<string.h>int main(){ char x[1001],y[1001],z[1001];int n,i,j,k,m,o;scanf("%d",&n);o=n;while(n--){ scanf("%s%s",x,y);i=strlen(x); j=strlen(y);for(k=0,m=0;i>0&&j>0;i--,j--){m+=x[i-1]-'0'+y[j-1]-'0';z[k++]=m%10+'0'; m/=10;}for(;i>0;i--){m+=x[i-1]-'0';z[k++]=m%10+'0';m/=10;}for(;j>0;j--){ m+=y[j-1]-'0';z[k++]=m%10+'0'; m/=10;}if(m>0) z[k++]=m%10+'0';printf("Case %d:\n%s + %s = ",o-n,x,y);for(;k>0;k--) printf("%c",z[k-1]);printf("\n"); if(n) printf("\n"); }return 0;}Let the Balloon RiseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 24082 Accepted Submission(s): 7343Problem DescriptionContest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When the contest is over, they will count the balloons of each color and find the result.This year, they decide to leave this lovely job to you.InputInput contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) -- the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.A test case with N = 0 terminates the input and this test case is not to be processed.OutputFor each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.Sample Input5greenredblueredred3pinkorangepinkSample Outputredpink#include<stdio.h>#include<string.h>void main(){int n,i,j,k,t,a[1001];char h[1001][16];while(scanf("%d",&n)!=EOF){if(n==0) break;for(i=0;i<=n;++i) a[i]=0;t=i=k=0;while(i<n) scanf("%s",h[i++]);for(i=0;i<n;++i)for(j=i+1;j<n;++j)if(strcmp(h[i],h[j])==0){++a[i];if(a[i]>k){k=a[i];t=i;}}printf("%s\n",h[t]);}}ElevatorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12849 Accepted Submission(s): 6646Problem DescriptionThe highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and 4 seconds to move down one floor. The elevator will stay for 5 seconds at each stop.For a given request list, you are to compute the total time spent to fulfill the requests on the list. The elevator is on the 0th floor at the beginning and does not have to return to the ground floorwhen the requests are fulfilled.InputThere are multiple test cases. Each case contains a positive integer N, followed by N positive numbers. All the numbers in the input are less than 100. A test case with N = 0 denotes the end of input. This test case is not to be processed.OutputPrint the total time on a single line for each test case.Sample Input1 23 2 3 1Sample Output1741#include <stdio.h>int main(){int a,b,n,t;while(scanf("%d",&n)!=EOF&&n){t=0;b=0;t+=n*5;//停的总时间累加起来while(n--){scanf("%d",&a);if(a>b)t+=6*(a-b);//与前次比若上升else if(a<b)t+=4*(b-a);//与前次比若下降b=a;}printf("%d\n",t);}return 0;}Digital RootsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 16322 Accepted Submission(s): 4610Problem DescriptionThe digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.InputThe input file will contain a list of positive integers, one per line. The end of the input will beindicated by an integer value of zero.OutputFor each integer in the input, output its digital root on a separate line of the output. Sample Input2439Sample Output63#include<stdio.h>#include<string.h>int main(){int l,s,i;char a[1000];while(scanf("%s",a)){l=strlen(a);s=0;if(l==1&&(strcmp(a,"0")==0) ) break;else{for(i=0;i<l;i++)s+=a[i]-'0';while(s>9){l=0;while (s){l+=s%10;s/=10;}s=l;}s=(s%10+s/10);printf("%d\n",s);}}return 0;}As Easy As A+BTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12198 Accepted Submission(s): 4870Problem DescriptionThese days, I am thinking about a question, how can I get a problem as easy as A+B? It is fairly difficulty to do such a thing. Of course, I got it after many waking nights.Give you some integers, your task is to sort these number ascending (升序).You should know how easy the problem is now!Good luck!inputInput contains multiple test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow. Each test case contains an integer N (1<=N<=1000 the number of integers to be sorted) and then N integers follow in the same line.It is guarantied that all integers are in the range of 32-int.OutputFor each case, print the sorting result, and one line one case.Sample Input23 2 1 39 1 4 7 2 5 8 3 6 9Sample Output1 2 31 2 3 4 5 6 7 8 9#include <stdio.h>int main(){int n,i;scanf("%d",&n);for (i=0;i<n;i++){int m,j,k,t,a[1001];scanf ("%d",&m);for (j=0;j<m;j++)scanf ("%d",&a[j]);for (j=0;j<m;j++)for (k=0;k<m-1-j;k++)if (a[k]>a[k+1]){t=a[k];a[k]=a[k+1];a[k+1]=t;}printf("%d", a[0]);for (j=1;j<m;j++){printf (" %d", a[j]);}printf("\n"); }return 0;}。

相关主题