特殊迴文數
阿新 • • 發佈:2021-07-20
題目
問題描述
123321 是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
輸入一個正整數 n, 程式設計求所有這樣的五位和六位十進位制數,滿足各位數字之和等於
n 。
輸入格式
輸入一行,包含一個正整數 n。
輸出格式
按從小到大的順序輸出滿足條件的整數,每個整數佔一行。
樣例輸入
52
樣例輸出
899998
989989
998899
資料規模和約定
1<=n<=54。
思路:
- 利用昨天寫的第二個演算法,就可以寫出來了。缺點就是,犧牲時間複雜度。
- 迴文數,即看一邊就行了。123321 看123或321
- 5位數 i j k j i,根據輸入的 n 判斷
(2i+2j+k==n)? cout<<i<<j<<k<<j<<i;
- 同理6位數 i j k k j i
(2i+2j+2k==n)? cout<<i<<j<<k<<k<<j<<i;
- 缺點也很明顯,for裡又嵌套了2個for,給的資料再大點就嗝屁;
程式碼:
import java.util.Scanner; class B{ public static void main(String[] args) { Scanner scanner =new Scanner(System.in); int n=scanner.nextInt(); for(int i=1;i<10;i++){ for(int j=0;j<10;j++){ for(int k=0;k<10;k++){ if(2*i+2*j+k==n){ System.out.println(""+i+j+k+j+i); } } } } for(int i=1;i<10;i++){ for(int j=0;j<10;j++){ for(int k=0;k<10;k++){ if(2*i+2*j+2*k==n){ System.out.println(""+i+j+k+k+j+i); } } } } scanner.close(); } }
執行結果: