2033 人见人爱A+B
Input 输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒。题目保证所有的数据合法。
Output 对于每个测试实例,输出A+B,每个输出结果也是由时分秒3部分组成,同时也要满足时间的规则(即:分和秒的取值范围在0~59),每个输出占一行,并且所有的部分都可以用32位整数表示。
Sample Input
2
1 2 3 4 5 6
34 45 56 12 23 34
Sample Output
5 7 9
47 9 30
#include<stdio.h>
int main()
{
int inputnum;
scanf("%d",&inputnum);
for(; inputnum!=0; inputnum--){
int ahour,amin,asec,bhour,bmin,bsec,chour,cmin,csec;
scanf("%d%d%d%d%d%d",&ahour,&amin,&asec,&bhour,&bmin,&bsec);
csec = (asec+bsec)%60;
if((asec+bsec)/60==1){
cmin = (amin+bmin)%60+1;
bmin++; //进1
}
else{
cmin = (amin+bmin)%60;
}
if((amin+bmin)/60==1){
chour = ahour+bhour+1;
}
else{
chour = ahour+bhour;
}
printf("%d %d %d\n",chour,cmin,csec);
}
return 0;
}
2070 Fibbonacci Number
Problem Description The fibbonacci function is defined as such: f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2)
Your program should be able to handle values of n in the range 0 to 50.
Input
Each test case consists of one integer n in a single line where 0≤n≤50. The input is terminated by -1.
Output
Print out the answer in a single line for each test case.
Sample Input
3 4 5 -1
Sample Output
2 3 5
#include<stdio.h>
int main()
{
__int64 list[51];
list[0] = 0;
list[1] = 1;
int i;
for (i=2; i<51; i++) {
list[i] = list[i-1]+list[i-2];
}
int inputnum;
while((scanf("%d",&inputnum)!=EOF)&&(inputnum!=-1)) {
printf("%I64dn",list[inputnum]);
}
return 0;
}
2071 Max Num
Input There are some cases. The first line contains an integer t, indicate the cases; Each case have an integer n ( 1 ≤ n ≤ 100 ) , followed n students’ height.
Output For each case output the highest height, the height to two decimal plases;
Sample Input
2
3 170.00 165.00 180.00
4 165.00 182.00 172.00 160.00
Sample Output
180.00
182.00
#include<stdio.h>
int main()
{
int inputnum;
while(scanf("%d",&inputnum)!=EOF){
for(; inputnum!=0; inputnum--){
int i,group;
scanf("%d",&group);
double max = 0.00;
double num;
for(i=0; i<group; i++){
scanf("%lf",&num);
if(num>max){
max = num;
}
}
printf("%.2f\n",max);
}
}
return 0;
}
2075 A|B?
Input 输入数据的第一行是一个数据T,表示有T组数据。每组数据有两个正整数A和B(A,B<10^9)。
Output 对于每组输入数据,输出"YES"表示可以被整除,"NO"表示不能被整除。
Sample Input
2 4 2 5 3
Sample Output
YES NO
#include<stdio.h>
int main()
{
int inputnum;
while(scanf("%d",&inputnum)!=EOF){
for(; inputnum!=0; inputnum--){
int a,b;
scanf("%d%d",&a,&b);
if(a%b==0){
printf("YES\n");
}
else{
printf("NO\n");
}
}
}
return 0;
}
2089 不要62
Problem Description 不吉利的数字为所有含有4或62的号码。
Input
输入的都是整数对n、m(0<n≤m<1000000),如果遇到都是0的整数对,则输入结束。
Output
对于每个整数对,输出一个不含有不吉利数字的统计个数,该数值占一行位置。
Sample Input
1 100 0 0
Sample Output
80
下面的代码会Time Limit Exceeded。但是确实是对的...
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a,b;
while((scanf("%d%d",&a,&b)!=EOF)&&(a!=0||b!=0)){
int count = 0;
for(; a<=b;a++){
char now[10];
itoa(a,now,10);
if(strstr(now,"4")==NULL&&strstr(now,"62")==NULL){
count++;
}
}
printf("%d\n",count);
}
return 0;
}
2090 算菜价
Input 输入含有一些数据组,每组数据包括菜种(字串),数量(计量单位不论,一律为double型数)和单价(double型数,表示人民币元数),因此,每组数据的菜价就是数量乘上单价啊。菜种、数量和单价之间都有空格隔开的。
Output 支付菜价的时候,由于最小支付单位是角,所以总是在支付的时候把分头去掉。最后,请输出一个精度为角的菜价总量。
Sample Input
青菜 1 2 罗卜 2 1.5 鸡腿 2 4.2
Sample Output
13.4
#include<stdio.h>
int main(){
char name[100];
double num, cost;
double sum = 0;
while(scanf("%s%lf%lf",name,&num,&cost)!=EOF){
sum = sum+num*cost;
}
printf("%.1lf\n",sum);
return 0;
}
2092 整数解
Problem Description 有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数
Input 输入数据为成对出现的整数n,m(-10000<n,m<10000),它们分别表示整数的和与积,如果两者都为0,则输入结束。
Output 只需要对于每个n和m,输出“Yes”或者“No”,明确有还是没有这种整数就行了。
Sample Input
9 15 5 4 1 -56 0 0
Sample Output
No Yes Yes
#include<stdio.h>
int main(){
int n,m;
while((scanf("%d%d",&n,&m)!=EOF)&&(n!=0||m!=0)){
int x = -9999;
int i,flag = 0;
for(i=-9999; i<=9999; i++){
if(i*(n-i)==m){ //y=n-x, 求解x(n-x)=m
flag = 1;
break;
}
}
if(flag==0){
printf("No\n");
}
else if(flag==1){
printf("Yes\n");
}
}
return 0;
}
2096 小明A+B
Problem Description
对于大于等于100的整数, 小明仅保留该数的最后两位进行计算, 如果计算结果大于等于100, 那么小明也仅保留计算结果的最后两位.
Input 输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包含两个非负整数A和B
Output 对于每组测试数据, 输出小明A+B的结果.
Sample Input
2 35 80 15 1152
Sample Output
15 67
#include<stdio.h>
int main()
{
int inputnum;
scanf("%d",&inputnum);
for(; inputnum!=0; inputnum--){
int a,b;
scanf("%d%d",&a,&b);
if(a>=100||b>=100){
a = a%100;
b = b%100;
}
printf("%d\n",(a+b)%100);
}
return 0;
}
Sky数
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 33963 Accepted Submission(s): 18931
Problem Description 一个有趣的四位数2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,由于他的发现,所以这里我们命名其为Sky数。
Input 输入含有一些四位正整数,如果为0,则输入结束。
Output 若n为Sky数,则输出“#n is a Sky Number.”,否则输出“#n is not a Sky Number.”。每个结果占一行。
Sample Input
2992 1234 0
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int num;
while((scanf("%d",&num)!=EOF)&&(num!=0)){
if((solve(num,10)==solve(num,12))&&(solve(num,10)==solve(num,16))&&(solve(num,12)==solve(num,16))){
printf("%d is a Sky Number.\n",num);
}
else{
printf("%d is not a Sky Number.\n",num);
}
}
return 0;
}
int solve(int num, int base){
int sum = 0;
int quo = num;
int remain;
while(quo!=0){
remain = quo%base;
sum = sum+remain;
quo = quo/base;
}
return sum;
}
2098 分拆素数和
Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
Output 对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
Sample Input
30 26 0
Sample Output
3 2
#include<stdio.h>
#include<math.h>
int main()
{
int prime[10000];
int i,j;
int index=0;
for(i=2; i<10000; i++){
int flag = 1;
for(j=2; j<=sqrt(i); j++){
if(i%j==0){
flag = 0;
}
}
if(flag==1){
prime[index] = i;
index++;
}
}
int num;
while((scanf("%d",&num)!=EOF)&&(num!=0)){
int count=0;
for(i=0; i<=num; i++){
if(prime[i]>=num){
break;
}
for(j=0; j<num; j++){
if(prime[j]>=num){
break;
}
if(prime[i]+prime[j]==num){
count++;
}
}
}
printf("%d\n",count/2);
}
return 0;
}
2099 整除的尾数
Problem Description 一个整数,只知道前几位,不知道末二位,被另一个整数除尽了,那么该数的末二位该是什么呢?
Input 输入数据有若干组,每组数据包含二个整数a,b(0<a<10000, 10<b<100),若遇到0 0则处理结束。
Output
对应每组数据,将满足条件的所有尾数在一行内输出,格式见样本输出。同组数据的输出,其每个尾数之间空一格,行末没有空格。
Sample Input
200 40
1992 95
0 0
Sample Output
00 40 80
15
#include<stdio.h>
int main(){
int a,b;
while((scanf("%d%d",&a,&b)!=EOF)&&(a!=0||b!=0)){
int i,count = 0;
for(i=a*100; i<=a*100+99; i++){
if(i%b==0){
if(count==0){
if(i<=a*100+9){
printf("0");
printf("%d",i%100);
}
else{
printf("%d",i%100);
}
}
else{
if(i<=a*100+9){
printf(" 0");
printf("%d",i%100);
}
else{
printf(" %d",i%100);
}
}
count++;
}
}
printf("\n");
}
return 0;
}