习题2-1 水仙花数(daffodil)
#include<stdio.h>
int main(){
for(int a=0;a<10;a++){
for(int b=0;b<10;b++){
for(int c=0;c<10;c++){
int m = a*100+b*10+c;
if(m == (a*a*a+b*b*b+c*c*c)){
if(m>99 && m<1000)
printf("%d\n",m);
}
}
}
}
}
习题2-2 韩信点兵(hanxin)
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、 五人
一排、 七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。 输入包含多组
数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<
7),输出总人数的最小值(或报告无解)。 已知总人数不小于10,不超过100。 输入到文件
结束为止。
样例输入:
2 1 6
2 1 3
样例输出:
41
No answer
#include<stdio.h>
int main(){
int a,b,c,temp=0;
scanf("%d%d%d",&a,&b,&c);
for(int num=10;num<=100;num++){
if(num%3==a && num%5==b && num%7==c){
printf("%d",num);
temp = 1;
break;
}
}
if(!temp){
printf("No answer!");
}
return 0;
}
习题2-3 倒三角形(triangle)
输入正整数n≤20,输出一个n层的倒三角形。 例如,n=5时输出如下:
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
for(int i=1;i<=a;i++){
for(int j=1;j<i;j++){
printf(" ");
}
for(int k=-2*i+2*a+1;k>=1;k--){
printf("#");
}
printf("\n");
}
}
题2-4 子序列的和(subsequence)
输入两个正整数n<m<106,输出
保留5位小数。 输入包含多组数据,结束标记为n=m=0。
提示:本题有陷阱。
样例输入:
2 4
65536 655360
0 0
样例输出:
0.42361
0.00001
日后补上!
(先赶集)
题2-5 分数化小数(decimal)
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。 a,b≤106,c≤100。 输入包含多组数据,结束标记为a=b=c=0。
样例输入:
1 6 4
0 0 0
样例输出:
0.1667
#include<stdio.h>
int main(){
int a,b,c;
char format[10] ={0};
scanf("%d%d%d",&a,&b,&c);
double d = a/(b*1.0);
sprintf(format,"%%.%df", c);
printf(format,d);
}
习题2-6 排列(permutation)
用1,2,3,…,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。 按照“abc def ghi”的格式输出所有解,每行一个解。
日后补上!
(先赶集)