【暴力自動生成排列】(2015)第六屆藍橋杯省賽 C/C++ B組 題解(第三題)
阿新 • • 發佈:2019-02-18
第三題
題目
三羊獻瑞
觀察下面的加法算式:
祥 瑞 生 輝
+ 三 羊 獻 瑞
-------------------
三 羊 生 瑞 氣
(如果有對齊問題,可以參看【圖1.jpg】)
思路分析
這是簡單的暴力題,使用next_permutation暴力列舉0~9數字可能組成的各個序列,對每一種序列判斷是否滿足上述條件即可。執行結果
1085
程式碼
#include <iostream> #include<algorithm> #include<cstring> using namespace std; //a1~a8分別對應“祥瑞生輝三羊獻氣 ” int main(int argc, char** argv) { int a[10]; //指定一個使用0~9數字的初始序列 for(int i=0;i<10;i++){ a[i]=i;//初始化序列為“0123456789” } do{//每次生成一個新的排列次序 if(!a[1]||!a[5]) continue; //如若高首位為0,則不需判斷,接著迴圈 int x=1000*a[1]+100*a[2]+10*a[3]+a[4]; int y=1000*a[5]+100*a[6]+10*a[7]+a[2]; int z=10000*a[5]+1000*a[6]+100*a[3]+10*a[2]+a[8]; if(x+y==z){ printf("%d\n",y); } }while(next_permutation(a,a+10)); return 0; }