解题思路:
题目给出的条件已经大大限定了三位数的范围,对于比例为1的三位数,它的三倍也应该是三位数,一个粗略的范围是[100,999/3],也就是[100,333],又由于三位数每位的数字各不相同,范围调整为[123,329];从这个范围里取出一个比例为1的数,就可以计算出比例为2、3的三位数;设置数组x[10],若下标1到9对应的数字i在三位数中出现了,就用此下标访问数组x[i]计数加1,要满足题设条件,x[1]到x[9]都必须为1,表明9个数字各不相同且都只出现了一次,只有这样,才可以输出对应的三个三位数。用C语言描述,就是:
#include<stdio.h> #define z(N) while(N){x[N%10]++;N/=10;} int main(){ int a,b,c,d,e,f; for(a=123;a<=329;a++){ int g,i,x[10]={0};//初始化计数数组 b=2*a;c=3*a;//算出比例为2、3的三位数 d=a;e=b;f=c; z(d)z(e)z(f)//取出三个三位数中的每位并计数 g=1; for(i=1;i<=9;i++) if(x[i]!=1){//若某位数并非只出现了一次 g=0;//不满足题设的条件 break; } if(g) printf("%d %d %d\n",a,b,c); } return 0; }
注意事项:
找到符合条件的所有数后,直接输出结果。
参考代码:
#include<stdio.h> int main(){ puts("192 384 576"); puts("219 438 657"); puts("273 546 819"); puts("327 654 981"); return 0; }
0.0分
1 人评分
字符串对比 (C语言代码)浏览:1471 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:648 |
【金明的预算方案】 (C++代码)浏览:873 |
简单的a+b (C语言代码)浏览:879 |
1013题解浏览:596 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:537 |
1071题解浏览:585 |
字符串的输入输出处理 (C语言代码)浏览:1085 |
第三届阿里中间件性能挑战赛-总决赛亚军比赛攻略浏览:1170 |