sum=0;
for(i=0;i<=n;i++)
sum+=i;
printf(\,sum); } }
1002 A + B Problem II
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
Input
The 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.
Output
For each test case, you should output two lines. The first line is \the test case. The second line is the an equation \Note there are some spaces int the equation. Output a blank line between two test cases.
Sample Input
2
1 2
112233445566778899 998877665544332211
Sample Output
Case 1: 1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
6
Author
Ignatius.L
代码:
#include
int main(){
char str1[1001], str2[1001];
int t, i, len_str1, len_str2, len_max, num = 1, k; scanf(\, &t); getchar(); while(t--){
int a[1001] = {0}, b[1001] = {0}, c[1001] = {0}; scanf(\, str1);
len_str1 = strlen(str1);
for(i = 0; i <= len_str1 - 1; ++i)
a[i] = str1[len_str1 - 1 - i] - '0'; scanf(\,str2);
len_str2 = strlen(str2);
for(i = 0; i <= len_str2 - 1; ++i)
b[i] = str2[len_str2 - 1 - i] - '0'; if(len_str1 > len_str2) len_max = len_str1; else
len_max = len_str2; k = 0;
for(i = 0; i <= len_max - 1; ++i){ c[i] = (a[i] + b[i] + k) % 10; k = (a[i] + b[i] + k) / 10; }
if(k != 0)
c[len_max] = 1;
printf(\, num); num++;
printf(\%s = \, str1, str2); if(c[len_max] == 1) printf(\);
for(i = len_max - 1; i >= 0; --i){ printf(\, c[i]); }
printf(\);
7
if(t >= 1)
printf(\); }
return 0; }
1005 Number Sequence
Problem Description
A number sequence is defined as follows:
f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.
Given A, B, and n, you are to calculate the value of f(n).
Input
The input consists of multiple test cases. Each test case contains 3 integers A, B and n on a single line (1 <= A, B <= 1000, 1 <= n <= 100,000,000). Three zeros signal the end of input and this test case is not to be processed.
Output
For each test case, print the value of f(n) on a single line.
Sample Input
1 1 3 1 2 10 0 0 0
Sample Output
2 5
Author
CHEN, Shunbao
Source
ZJCPC2004
Recommend
JGShining
代码:
#include
8
int f[200]; int main() {
int a,b,n,i;
while(scanf(\,&a,&b,&n)&&a&&b&&n) {
if(n>=3) {
f[1]=1;f[2]=1;
for(i=3;i<=200;i++) {
f[i]=(a*f[i-1]+b*f[i-2])%7; if(f[i-1]==1&&f[i]==1) break; }
i-=2; n=n%i; if(n==0)
printf(\,f[i]); else
printf(\,f[n]); } else
printf(\); }
return 0; }
1008 Elevator
Problem Description
The 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 floor when the requests are fulfilled.
9
Input
There 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.
Output
Print the total time on a single line for each test case.
Sample Input
1 2 3 2 3 1 0
Sample Output
17 41
Author
ZHENG, Jianqiang
Source
ZJCPC2004
Recommend
JGShining
代码:
#include
int sum,i,n;
while(scanf(\,&n)&&n!=0) {
for(i=1;i<=n;i++)
scanf(\,&a[i]); sum=0; a[0]=0;
for(i=1;i<=n;i++) {
if(a[i]>a[i-1])
sum+=6*(a[i]-a[i-1]); else
sum+=4*(a[i-1]-a[i]);
10