給定乙個整數x,能不能通過調換x數字的位置,使得調換之後得到的數是x的倍數?
注意:交換數字位置之後得到的數不能有前導0。如果可以輸出「possible」,否則輸出「impossible」。其中雙引號不用輸出。
多組測試資料。
第一行,乙個整數g,表示有g組測試資料。1<=g<=11。
每組測試資料格式:乙個正整數x,x的範圍是[1,1000000]。
如果可以輸出「possible」,否則輸出「impossible」。
5
142857
141035
1000000
4
possible
impossible
possible
impossible
impossible
第一組測試資料:
可以通過把 142857 交換數字的位置,得到 285714。
因為 285714=2*142857,所以滿足要求,輸出 possible
第二組測試資料:
只能變成 41,但不能整除 14。
第三組測試資料:
可以變成 3105, 3105 = 3 * 1035。、
第四組測試資料:
不能變化,因為不能出現前導 0。
第五組測試資料:沒得變化
整體來說還是挺簡單的,就是有一點繞,好像可以直接暴力。
開乙個陣列b,存所給x的所有倍數的數;
再開乙個陣列a,將x這個數拆分,分別存入;
再開乙個陣列d,將陣列b中的數拆分,存入;
*所有陣列均要開long long,因為x的範圍在(1,1000000),防止爆
比較陣列d和陣列a,首先比較位數,其次再比較陣列裡的數字元素是否相同,一旦發現相同,則開始計算有幾個數相同,判斷是否與位數相同,相同則輸出「possible」,,否則輸出「impossible」。(這一部分就是最難的點啦!!!)
*由於陣列b中不止乙個數字元素,那麼3、4一定需要進行迴圈,再判斷
#include
using namespace std;
intmain()
for(i=
2; i<
10; i++
) m=0;
if(s==c)
//先判斷位數是否相等}if
(m==c)}if
(m!=c&&i==9)
printf
("impossible\n");
}}return0;
}
acm 最小公倍數
時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 為什麼1小時有60分鐘,而不是100分鐘呢?這是歷史上的習慣導致。但也並非純粹的偶然 60是個優秀的數字,它的因子比較多。事實上,它是1至6的每個數字的倍數。即1,2,3,4,5,6都是可以除盡60。我們希望尋找到能除盡1至n的...
ACM 最小公倍數LCM
輸入2個正整數a,b,求a與b的最小公倍數。input 2個數a,b,中間用空格隔開。1 a,b 10 9 output 輸出a與b的最小公倍數。sample input 30 105 sample output 妙點 1 最小公倍數的做法是在最大公因數的基礎上的。最小公倍數 a b 最大公約數 2...
ACM入門之揹包詳解
by tanky woo 揹包之01揹包 完全揹包 多重揹包詳解 首先說下動態規劃,動態規劃這東西就和遞迴一樣,只能找區域性關係,若想全部列出來,是很難的,比如漢諾塔。你可以說先把除最後一層的其他所有層都移動到2,再把最後一層移動到3,最後再把其餘的從2移動到3,這是乙個直觀的關係,但是想列舉出來是...