在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。
样例1
input: 103
output: Fishing in day 103
样例2
input: 34
output: Drying in day 34
题解
1 2 3 4 5 6 7
intmain(){ int n; scanf("%d",&n); if(n %5>=1&& n %5<=3)printf(Fishing in day %d", n); elseprintf("Drying in day %d", n); return0; }
房子的高度
众所周知,KUN 作为内蒙首富,在内蒙有一座海景房,在房子的最高层恰好可以看到太平洋(在二维平面内近似成一个点)。我们非常想知道 KUN 到底有多富有以及 KUN 的房子到底有多高。我们可以通过以下方式对 KUN 的房子的高度进行估计(由于 KUN 的房子实在是太高了,我们可以近似地认为房子最高层的高度等于房子的高度)。
输入格式
一行两个整数表示地球的半径r和从房顶到太平洋的距离d。(1≤r,d≤105)
输出格式
一行一个实数表示 KUN 海景房的高度,保证答案是一个整数。
输入样例
3 4
输出样例
2
题解
因为在房子的最高层恰好可以看到太平洋,所以可知 ∆ABC 是直角三角形,故根据勾股定理可算出答案。
1 2 3 4 5 6 7
intmain(){ unsignedlonglong r, d; scanf("%llu %llu",&r,&d); unsignedlonglong k = r * r + d * d; printf("%llu",((int)sqrt(k)- r)); return0; }
运输打折问题
某运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:
其中基本运输费用为每吨每公里1元,现请你帮助该运输公司设计自动计费程序,帮助会计人员计算运输费用。
输入格式
输入每次运输的载重(吨)、里程(公里)。
输出格式
输出其运输费用,精确到元。
样例1
input: 1 200
output: 200
样例2
input: 10 2500
output: 22500
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
intmain(){ double t, x; scanf("%lf %lf",&t,&x); double result; if(x >=3000){ result = x *0.85; }elseif(x >=2000){ result = x *0.9; }elseif(x >=1000){ result = x *0.92; }elseif(x >=500){ result = x *0.95; }elseif(x >=250){ result = x *0.98; }else result += x; printf("%.0f", result * t); return0; }
intmain(){ int t, a, b, c; bool start = false; while(scanf("%d",&t)){ while(t--){ if(start)printf("\n"); else start = true; scanf("%d %d %d",&a,&b,&c); if(a + b > c && a + c > b && b + c > a)printf("YES"); elseprintf("NO"); } } return0; }
intmain(){ char str[50]; scanf("%s", str); int len =strlen(str); bool start = false; for(int i = len -1; i !=-1;--i){ if(str[i]=='0'){ if(!start)continue;// 跳过第一个非零数字前的所有零 }else{ start = true;// 当遇到第一个非零数字时表示输出开始 } printf("%c", str[i]); } if(!start)printf("0");// 处理输入为0的情况 return0; }
计算最大值出现的次数
计算一维数组中最大值出现的次数。
输入格式
输入在一行n( n <= 1000,代表数组的大小),在下一行中输入n个整数,为一维数组的元素。
输出格式
输出最大值和出现的次数。
输入样例
4 4 2 2 4
输出样例
4 2
题解
1 2 3 4 5 6 7 8 9 10 11 12 13
intmain(){ int n, k; scanf("%d",&n); int max = INT_MIN; int amount[1001]={0}; for(int i =0; i != n;++i){ cin >> k; if(k > max) max = k; ++amount[k]; } printf("%d %d", max,amount[max]); return0; }
intmain(){ int d, n; scanf("%d %d",&d,&n); for(int i =1; i < n;++i){ for(int k =0; k != i;++k)printf("%d", d); printf("\n"); } for(int i = n; i !=0;--i){ for(int k =0; k != i;++k)printf("%d", d); if(i !=1)printf("\n"); } return0; }
相邻数对
给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
输入格式
输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数(1 <= n <= 1000并且所有整数均属于[0, 10000])。
输出格式
输出一个整数,表示值正好相差1的数对的个数。
输入样例
6 10 2 6 3 7 8
输出样例
3
样例说明
值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。
题解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
intmain(){ int n; scanf("%d",&n); int size =0; int nums[n]; int result =0; for(int i =0; i != n;++i){ scanf("%d",&nums[i]); for(int k =0; k != size;++k){ if(abs(nums[k]- nums[i])==1)++result; } ++size; } printf("%d", result); return0; }
素因子分解
给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式 N = p1k1 × p2k2 ⋯ pmkm。
intmain(){ int n, op, k; scanf("%d",&n); while(scanf("%d %d",&op,&k)){ switch(op){ case1:{ int value =~(1<< k); n &= value; break; } case2:{ int value =1<< k; n |= value; break; } default:{ int value =(n >> k)&1; if(value ==1){ value =~(1<< k); n &= value; }else{ value =1<< k; n |= value; } break; } } } cout << n; return0; }