- 論壇徽章:
- 0
|
回復 #1 吳秦 的帖子
這是我自己的,大家也貼下自己的。
/*我的思路是:1~9組成的最小三位數(shù)是123,最大的是987,由于要滿足1:2:3的關(guān)系,
*最小的那個數(shù)應(yīng)該不到于987/3=329。這樣的話第一個數(shù)的變化范圍是123~329,
*將這里面的數(shù)分別乘2、乘3,然后判斷這三個數(shù)是否符合要求,即這三個數(shù)是否由1~9組成,
*而且各個數(shù)字不能相同。代碼如下:
*/
- #include<stdio.h>
- #include<stdlib.h>
- int judge(int n);//用于判斷整數(shù)n的各位數(shù)字是否想同,如果有想同的就返回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(xiāng)、m、n是否符合要求。如果不符合就跳出本次循環(huán),進入下次循環(huá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的位數(shù)
- for(i=1;i<=len;i++)
- {//將n的各位數(shù)字存入num[],并判斷是否存在0及相同的數(shù)字,如果存在就返回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 編輯 ] |
|