2-1 daffodil水仙花
#include <stdio.h> int main() { int i,a,b,c; for(i=100;i<=999;i++) { a=i/100; b=(i-a*100)/10; c=i-a*100-b*10; if(a*a*a+b*b*b+c*c*c==i) printf("%d\n",i); else continue; } return 0; }
2-2 hanxin韩信
#include <stdio.h> int main() {int t,i,a,b,c; t=1; while(scanf("%d %d %d",&a,&b,&c)==3) { for(i=10;i<=100;i++) { if(i%3==a && i%5==b && i%7==c) { printf("case %d:%d\n",t,i); break; } if(i==100) printf("case %d:no answer\n",t); } t++; } return 0; }
2-3 triangle倒三角形
#include <stdio.h> int main() { int n,i,k,t; scanf("%d",&n); for(i=1;i<=n;i++) { for(t=0;t<i-1;t++) printf(" "); for(k=0;k<2*n-(2*i-1);k++) printf("*"); printf("\n"); } return 0; }
2-4 subsequence 子序列的和
#include <stdio.h> int main() {int i,n,m,t=1; double sum; while(scanf("%d %d",&n,&m)) { if(m==0 && n==0) break; for(i=n,sum=0;i<=m;i++) { sum=sum+1.0/i/i; //陷阱:当使用i*i时会出现结果溢出 } printf("case %d:%.5lf\n",t,sum); t++; } }
2-5 decimal 分数化小数
#include <stdio.h> int main() { int a,b,c; double k;while(scanf("%d %d %d",&a,&b,&c)) { if(a==0 && b==0 && c==0) break; k=(double)a/b; printf("%.*lf\n", c, k); // 难点,任意保留c位小数 } return 0; }
2-6 permutation 排列
思路:先给数组a[10]全部赋0,拆分每一位数,赋1。若不重复,则有a[1]+a[2]+...a[9]=9
#include <stdio.h> int main(void) { int x, y, z, a[10] = {0}; for(x = 100; x < 333; x++) { y = 2*x; z = 3*x; a[x/100] = a[x/10%10] = a[x%10] = 1; a[y/100] = a[y/10%10] = a[y%10] = 1; a[z/100] = a[z/10%10] = a[z%10] = 1; int i, s = 0; for(i = 1; i < 10; i++) s += a[i]; if(s == 9) printf("%d\t%d\t%d\n", x, y, z); for(i = 1; i < 10; i++) a[i] = 0; } return 0; }