1. 程式人生 > >藍橋杯 基礎練習 特殊迴文數

藍橋杯 基礎練習 特殊迴文數

問題描述   123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
  輸入一個正整數n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於n 。 輸入格式   輸入一行,包含一個正整數n。 輸出格式   按從小到大的順序輸出滿足條件的整數,每個整數佔一行。 樣例輸入 52 樣例輸出 899998
989989
998899 資料規模和約定   1<=n<=54。 列舉所有的五位數和六位數,滿足情況就輸出。 這樣考慮比較簡單,注意考慮問題的角度,如果是用數字去組合就比較麻煩了。 程式碼:
#include <iostream>
#include 
<cstdio> #include <algorithm> using namespace std; int n; bool check(int k) { int t[6],c = 0,sum = 0; while(k) { t[c ++] = k % 10; sum += k % 10; k /= 10; } if(sum != n) return false; if(c == 5) { if(t[0] != t[4] || t[1] != t[3]) return
false; } else if(c == 6) { if(t[0] != t[5] || t[1] != t[4] || t[2] != t[3]) return false; } return true; } int main() { scanf("%d",&n); for(int i = 10000;i < 1000000;i ++) { if(check(i)) printf("%d\n",i); } }