- 论坛徽章:
- 0
|
回复 #1 吴秦 的帖子
这是我自己的,大家也贴下自己的。
/*我的思路是:1~9组成的最小三位数是123,最大的是987,由于要满足1:2:3的关系,
*最小的那个数应该不到于987/3=329。这样的话第一个数的变化范围是123~329,
*将这里面的数分别乘2、乘3,然后判断这三个数是否符合要求,即这三个数是否由1~9组成,
*而且各个数字不能相同。代码如下:
*/
- #include<stdio.h>
- #include<stdlib.h>
- int judge(int n);//用于判断整数n的各位数字是否想同,如果有想同的就返回0;否则返回1
- main()
- {
- int l,m,n,p,q;
- for(l=123;l<=329;l++)
- {
- m=2*l,n=3*l;
- p=l*1000+m,q=p*1000+n;
- if(judge(l)==0||judge(m)==0||judge(n)==0||judge(p)==0||judge(q)==0)
- //判断l、m、n是否符合要求。如果不符合就跳出本次循环,进入下次循环
- continue;
- printf("%d,%d,%d\n",l,m,n);
- }
- }
- int judge(int n)
- {
- int num[10],i,j,len=0,temp=n;
- do
- {
- ++len;
- temp=temp/10;
- }while(temp);//求出n的位数
- for(i=1;i<=len;i++)
- {//将n的各位数字存入num[],并判断是否存在0及相同的数字,如果存在就返回0
- if((num[i]=n%10)==0) return 0;
- n=n/10;
- for(j=1;j<i;j++)
- if(num[j]==num[i]) return 0;
- }
- return 1;
- }
复制代码
[ 本帖最后由 吴秦 于 2009-4-6 18:18 编辑 ] |
|