藍橋杯寒假訓練二1006相乘後數字不變

2021-08-15 19:54:35 字數 1430 閱讀 6335

題目:

由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。

比如:

210 x 6 = 1260

8 x 473 = 3784

27 x 81 = 2187

都符合要求。

如果滿足乘法交換律的算式算作同一種情況,那麼,包含上邊已列出的3種情況,一共有多少種滿足要求的算式。

請填寫該數字,通過瀏覽器提交答案,不要填寫多餘內容(例如:列出所有算式)。

題目思路:

一開始是自己的思路,但是比較曲折,我是這麼想的,

first*second=result

把result的結果儲存在乙個陣列裡面主函式從第乙個數first開始迴圈,對於每乙個first找到所有的second使得 first*second<=9999,然後再判斷first,second組成的數字都得在result中出現

這個想法有個漏洞

會出現下面這樣的算式

/*45*187=8415

45*209=9405

46*138=6348

46*139=6394*/

再加上乙個函式fun3(int i,int j)用來判斷i,j是由四個數字組成的;

還有乙個問題,怎麼樣避免重複呢 在這裡可以直接加上乙個 i<=j

#include#includeusing namespace std;

int a[4];//用來儲存這四位數

int b[4];//標記陣列

int fun(int x)//把 四位數x 的個位數字存放在 a[4]中 並且四位數不同的話 返回1 有相同的話 返回0

for(int i=0;i<4;i++)

for(int j=i+1;j<4;j++)

return 1;

}void fun1(int x)

x/=10; }}

int fun2(int x,int y)

while(y)

return i;

}int main()

if(ok==4&&fun2(i,j)==4&&i<=j)

for(int i=0;i<4;i++) //res 要是不同的四位數

for(int j=i+1;j<4;j++)

int flag_1[20];//用來表示兩個乘數 的每個數字

while(first>0)

while(second>0)

if(p!=4)//前面相乘的兩個數的位數和一定要得是 4位

else//左邊這四位數要和 右邊的四位數相同 這就暗含了左邊的四位數是互不相同的

}for(int i=0;i<4;i++)

if(ye==0)

return false;

} return true; }

}int main()

} }cout<

藍橋杯寒假訓練 1

一年一度的植樹節就要到了,計算機學院學生準備在學院教學樓門前的空地上種植樹木。為使樹木排列得更加美觀,大家決定把樹木排列成菱形。現在告訴你我們所擁有的樹木能排列成邊長為 nn 的菱形,請你程式設計輸出樹木所排列的圖案 用 號代表樹木 input 乙個整數 nn 1 n 10 1 n 10 outpu...

2017藍橋杯寒假訓練計畫(一)1 18

填空題 1.報數遊戲 vector a new vector for int i 1 i 10 i for system.out.println a 答案 a.add a.remove 0 思路 vector其實不是很懂,但是憑其他 可以看出add和remove的作用,在第三個for迴圈中填寫a.a...

2020藍橋杯訓練賽 二

1 9的數字可以組成3個3位數,設為 a,b,c,現在要求滿足如下關係 b 2 a c 3 a 請你寫出a的所有可能答案,數字間用空格分開,數字按公升序排列。注意 只提交a的值,嚴格按照格式要求輸出。列舉遍歷,滿足要求的a只會在123 333範圍內,只要檢查一下a情況下,b,c是否全部符合題意,這裡...