迷茫2017-04-18 10:58:30
劉汝佳的題啊。
枚舉第一個數, 也就是1:2:3中佔1的那個數。
枚舉範圍是123~345。根據這個數,去計算其他兩個數,然後判定是否剛好用了9個數字即可。
大家讲道理2017-04-18 10:58:30
思路很簡單,既然要讓比例為1:2:3且每個數要用一次,那就直接將1,2,3各放大x倍,然後判斷是否滿足每個數僅出現一次即可。 1只少放大100倍才能達到3位數,所以直接從123開始即可。代碼如下。
int testa()
{
int a=1,b=2,c =3;
char szA[10]={0},szB[4]={0},szC[4]={0},cTag[10]={0};
for(int i=123;i<=333;i++)
{
memset(szA,0x00,10);memset(szB,0x00,4);memset(szC,0x00,4);memset(cTag,0x00,10);
sprintf_s(szA,"%d",a*i);sprintf_s(szB,"%d",b*i);sprintf_s(szC,"%d",c*i);
strcat_s(szA,szB);strcat_s(szA,szC);
int j=0;
for(j=0;j<9;j++)
{
if(cTag[szA[j]-'1']!=0)
break;
cTag[szA[j]-'1']=1;
}
if(j==9)
printf("%s\n",szA);
}
return 0;
}