用1239組成三位數abcdef和ghi每個數字恰

時間 2021-12-24 07:55:31

1樓:匿名使用者

#include

void main()}}

}int num=100*str[6]+10*str[7]+str[8];

int sum=a+b+c+d+e+f+g+h+i;

for(i=0;i<9;i++)

if((i+1)%3==0)}}

cout<

if(num<987)

2樓:匿名使用者

#include

int remove(int* list,int num)int main()

;if(remove(list,abc)==-1 || remove(list,def)==-1 || remove(list,ghi)==-1)

continue;

printf("%d %d %d\n",abc,def,ghi);

}return 0;}

3樓:施勇旺

問題出在 break;上

以下是可行的實現:

//忽略頭

int a,b,c,d,e,f,g,h,i;

for(a=1;a<10;a++)

for(b=1;b<10;b++)

for(c=1;c<10;c++)

for(d=1;d<10;d++)

for(e=1;e<10;e++)

for(f=1;f<10;f++)

for(g=1;g<10;g++)

for(h=1;h<10;h++)

for(i=1;i<10;i++)

}printf("time used=%.21f\n",(double)clock()/clocks_per_sec);

return 0;

以下是更好的實現:主要是利用一個陣列實現集合(set)的功能。

//忽略頭

for(int i = 102;i<333;i++)if(flag==1)

printf("%d %d %d\n",i,2*i,3*i);

}return 0;

目前的最佳答案是一個不錯的方法,數學支援如下:

1~9加起來真能是45, 1~9乘起來只能是362880其實應該反過來說

若9個小於10 的正整數的和為45,積為362880,則這9個數是1,2,3...9的一個排列。

調整法可證。

4樓:丶失丶心丶瘋丶

利用遍歷,因為組成的數的最小值為123,最大值為789,同時,三個數滿足1:2:3的比例關係,因此只需要遍歷abc從最小值到最大值即可。

abc最小值為123,因為abc:ghi=1:3,所以abc的最大值為組成三位數的最大值的三分之一,即329。此時只需要遍歷abc從123到329即可。

def=abc*2,ghi=abc*3。

這裡你需要知道1-9這9個數的和為45,乘積為362880,只需要判斷生成的數每一位滿足這個條件即可。

具體程式如下(c++):

#include

using namespace std;

int sum(int i)    //求三位數每位相加之和int mult(int i)    //求三位數每位相乘之積int main()

}system("pause");

return 0;}

5樓:匿名使用者

這道題以前做過, 有點印象

其實這道題就2個地方要注意, 也是解題關鍵

abc:def:ghi=1:2:3

1,2,3……,9組成3個三位數abc,def和ghi,每個數字恰好使用一次

對於第一個地方, 我們可以用1個迴圈, 加3個變數來實現

就是for(i = 123; i <= 329; i++)

i 最小隻能是123, 最大隻能是329(因為最大數字只能是987)

第2個地方的實現, 我們可以用數學的方法來實現

1~9加起來真能是45, 1~9乘起來只能是362880

所以我們可以將前面的i, j, k分別分解出來的9位數字相加, 相乘,

看最後的結果是不是45,362880

具體**

//用1,2,3……,9組成3個三位數abc,def和ghi,每個數字恰好使用一次,要求abc:def:ghi=1:2:3.輸出所有解。

#include

int main()

return 0;

}效果:

ps:若有不明白的地方, 請追問

6樓:匿名使用者

#include

int func(int a)

;for(temp=a%10;a;a/=10,temp=a%10)if(flag[temp]++ == 1) return 0;

return 1;

}void main()

7樓:匿名使用者

初看覺得你這個程式的演算法還行。仔細一看覺得你的演算法不好。你是在最裡層迴圈裡面使用break語句,會給計算機帶來很大的計算量。這個題應該不難。給你稍微改一下,你自己試一下。

for(a=1;a<10;a++)}}

後面每層都這樣。自己多思考一下

用0至9這10個數字恰好組成一位數,兩位數,三位數,四位數各一個(每個數字只用一次),並且這四個數

8樓:匿名使用者

已知:四位數是2940。首先對2940這個四位數進行分析:

因:尾數是0,肯定能被2和5整除,2+9+4+0=15肯定能被3整除,得其他三個數都是奇數,且尾數只能是奇數,尾數也不能為5,並且一個數各位數字之和不能被3整除。

故尾數只能是1、3、7,(注意:兩兩互質是任意兩個都互質,並不是整體互質)

因:2940各位數字的和為2+9+4+0=15,15是3的倍數,得出:一位數不能是3;(看題目時注意一位數和一個數的區別,)

2940的尾數是0,也得出尾數不能是5,那麼尾數只能是1、3、7

2940能被7整除(2940÷7=420),故一位數不是7,

綜上:一位數不能為偶數6、8,也不能為3、5、7,得出一位數只能是1

又因:一個數只用一次,得:3、5、6、7、8沒有用,其中5、6、8必須是十位或者百位,3、7必須是尾數,

因:若組成一個三位數:可能是以下三個數字互相組合:563、567、683、687、583、587

先排除:6+7+8=21,5+6+7=18,剩餘的只有563組合、683組合、583組合、587組合。

如果563之間組合,那麼二位數必須87,因8+7=15,故不能和2940互質,

如果是638之間組合,那麼二位數,必須是57,因5+7=12,故不能於2940互質,

如果是587之間組合,那麼二位數,必須是63,因6+3=9,也不能與2940互質,

最後只剩下:583組合,那麼二位數必須是67,6+7=13,不能被3整除,(雖然不能確定,但排除法可以得出)

583之間組合,358與538(是偶數),385與835(尾數是5),853與583,

得出:一位數是1;二位數是67;三位數是583或者853

驗算:1不用驗算

67是質數,和853、583、2940都不能整除,故不用驗算,(若:二個數,小數是質數,且不能被大數整除,那麼他們一定是互質)

583和2940資料大,需要驗算:

2940÷583=5餘25

583÷25=23餘8

25÷8=3餘1

583和2940公約數是1,互質,

再驗算853和2940是否互質

2940÷853=5餘381

853÷381=2餘91

381÷91=4餘17

91÷17=5餘6

17÷6=2餘5

6÷5=1餘1

故也是互質,

注:餘1是互質,餘0是公約數,

故3位數的和是1+67+853=921或者1+67+583=651

9樓:我是穿越迷

2940的約數有1、2、5、7……

另外3個數尾數不

能是5、8、6,一位數不能是3、7,一位數只能是1,兩位數和三位數的尾數只能是3或7,三位數不能由5、6、7、8或6、7、8組成;

兩位數個位數是3,十位數不能是5、6,只能是8;三位數5、6、7不行,兩位數尾數只能是7、十位不能是5、8、3;兩位數是67,三位數是853

1+67+853=921

將數字1至9分別填入右邊豎式的方格內使算式成立(每個數字恰好使用一次),那麼加數中的四位數最小是____

10樓:匿名使用者

首先從1---9中選三個數相加得8或18,確定各位上的數字:

(1)1+3+4=8,

(2)1+2+5=8,

(3)1+8+9=18,

(4)3+7+8=18,

(5)4+6+8=18,

(6)5+6+7=18.

假如(1)成立,則各位上的三個數字確定是:1,3,4.則十位上的三個數字應該從2,5,6,7,8,9中確定,並且需要滿足三個數相加是10或20.成立的有:

a:5+6+9=20;

b:5+7+8=20.

假如a成立,那麼十位上的三個數字確定是:5,6,9.那麼百位上的數字只能是2,7,8.但是,

2+7+8=17,再加上十位上的相加進的2.17+2=19,不是整十的數.不滿足題目要求.同樣的方法驗證b也不符合題目要求.

用同樣的方法驗證(2),(3)都不滿足題目要求.而(4)個位上的三個數是:3,7,8.

十位上的三個數是:4,6,9,

百位上的三個數是:1,2,5.

要求最小的四位數是:1143.

而(5)個位上的三個數是:4,6,8,

十位上的三個數是:3,7,9,

百位上的三個數是:1,2,5.

要求最小的四位數是:1134.

而(6)個位上的三個數是:5,6,7,

十位上的三個數是:2,8,9,

百位上的三個數是:1,3,4.

要求最小的四位數是:1125.

很明顯這三個四位數最小的是一個1125.

故答案為:1125.

用0至9這10個數字恰好組成一位數、兩位數、三位數、四位數各一個(每個數字只能用一次),且這四個數兩兩

11樓:匿名使用者

2940=2×2×3×5×7×7

則另外三個數不能被2、3、5、7整除

剩下的數字有1、3、5、6、7、8

因5、6、8不能在個位,所以三個數的個位是1、3、7一位數不能是3或7

則一位數只能是1

若二位數的個位是3,則十位是5、6、8都不行因為63能被3整除,

若是53,剩下687或867能被3整除.

若是83,剩下567或657能被3整除.

則二位數的個位只能是7

其十位不能是5或8,則二位數是67

三位數是583或853都行.

所以另外三個數可能是:1、67、583或853.

由0,1,2,3,4,5,6,7,8,9組成三位數,這個三位數中不能有數字重複(如112),求能被3整除的數有多少個

能被3整除的數,各位數字相加為3的倍數。將數字0到9分成3組 a,3n 0,3,6 9 b,3n 1 1,4,7 c,3n 2 2,5,8 3位數中的3個數字 1 都從a中選取,第1位不為0,共有 3 3 2 182 都從b中選取,3 2 1 6 3 都從c中選取,3 2 1 6 4 從a b c中...

用10以內的質陣列成三位數,這些三位數,既是2的倍數,又是

2個。用10以內的質數有 2 3 5 7,含有因數2,個位是偶數,只有2,是3的倍數,百位 十位 個位是3的倍數,個位已經是2,百位 十位等於4,7,10。2,3,5,7中兩數的和為4,7,10的有2 2 4 2 5 7 3 7 10。所以這些三位數有 222,252,522,372,732。要使得...

用23479組成三位數乘兩位數積最大積最小分別是

墨汁諾 用 2 3 4 7 9 組成三位數乘兩位數,積最大與積最小分別是 最小積為 24x379 9096 最大積為 93x742 69006 例如 確定兩數的最高為 為9 5 依次確定下面的數字,把剩下的最大的數字放在zhi乘數和被乘數上 從左數起第二個因數 3 1 2.剩下的0按題目要去放在乘數...