題目:
由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是否全部符合題意,這裡...