算法竞赛入门经典课后习题(本人版)
其实还没有验证过。
2-1:水仙花数
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 for(int i=100;i<=999;i++) 6 { 7 int s=0; 8 for(int j=i;j!=0;j=j/10) 9 { 10 s=pow(j%10,3)+s; 11 } 12 if(s==i) printf("%d\n",i); 13 } 14 return 0; 15 }
2-4:子序列和
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int m,n,c=1; 6 scanf("%d%d",&n,&m); 7 while(m!=0&&n!=0) 8 { 9 double s=0; 10 for(int i=n;i<=m;i++) 11 { 12 s+=1/pow(i,2); 13 } 14 15 printf("Case %d:%.5f\n",c,s); 16 c++; 17 scanf("%d%d",&n,&m); 18 } 19 20 return 0; 21 }
2-2:韩信点兵
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int a,b,c,count=1; 6 while(scanf("%d",&a)!=EOF) 7 { scanf("%d",&b); 8 scanf("%d",&c); 9 int i; 10 for( i=10;i<=100;i++) 11 { 12 if(i%3==a&&i%5==b&&i%7==c) 13 break; 14 } 15 if(i<=100) printf("Case %d:%d\n",count,i); 16 else printf("Case %d:No Answer\n",count); 17 } 18 19 20 return 0; 21 }
2-3:倒三角形
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int n; 6 scanf("%d",&n); 7 for(int i=0;i<n;i++) 8 { 9 for(int j=0;j<i;j++) 10 { 11 printf(" "); 12 } 13 for(int j=0;j<2*(n-i-1)+1;j++) 14 { 15 printf("*"); 16 } 17 printf("\n"); 18 } 19 20 return 0; 21 }
2-5:分数化小数
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 int a,b,c; 6 scanf("%d%d%d",&a,&b,&c); 7 while(a!=0&&b!=0&&c!=0) 8 { 9 printf("%d.%.0f\n",a/b,a*1.0/b*pow(10,c)); 10 scanf("%d%d%d",&a,&b,&c); 11 } 12 return 0; 13 }
2-6:排列
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 for(int i=1;i<=4;i++) 6 { 7 for(int j=1;j<=9;j++) 8 { 9 for(int k=1;k<=9;k++) 10 { 11 int s1=i*100+j*10+k; 12 int s2=2*s1%1000; 13 int s3=3*s1%1000; 14 if(i!=j&&i!=k&&i!=s2%10&&i!=s2/10%10&&i!=s2/100&&i!=s3%10&&i!=s3/10%10&&i!=s3/100 15 &&j!=k&&j!=s2%10&&j!=s2/10%10&&j!=s2/100&&j!=s3%10&&j!=s3/10%10&&j!=s3/100 16 &&k!=s2%10&&k!=s2/10%10&&k!=s2/100&&k!=s3%10&&k!=s3/10%10&&k!=s3/100 17 &&s2%10!=s2/10%10&&s2%10!=s2/100&&s2%10!=s3%10&&s2%10!=s3/10%10&&s2%10!=s3/100 18 &&s2/10%10!=s3%10&&s2/10%10!=s3/10%10&&s2/10%10!=s3/100&&s2/10%10!=s2/100 19 &&s2/100!=s3%10&&s2/100!=s3/10%10&&s2/100!=s3/100 20 &&s3%10!=s3/10%10&&s3%10!=s3/100 21 &&s3/10%10!=s3/100) 22 { 23 printf("%d %d %d\n",s1,s2,s3); 24 } 25 } 26 } 27 } 28 return 0; 29 }

浙公网安备 33010602011771号