藍橋杯日常刷題 歷屆試題1434 回文數字

2021-08-17 03:36:38 字數 1697 閱讀 7931

題目描述

觀察數字:12321,123321 都有乙個共同的特徵,無論從左到右讀還是從右向左讀,都是相同的。這樣的數字叫做:回文數字。

本題要求你找到一些5位或6位的十進位制數字。滿足如下要求:

該數字的各個數字之和等於輸入的整數。

輸入

乙個正整數 n (10< n< 100), 表示要求滿足的數字和。

輸出

若干行,每行包含乙個滿足要求的5位或6位整數。

數字按從小到大的順序排列。

如果沒有滿足條件的,輸出:-1

樣例輸入

44
樣例輸出

99899

499994

589985

598895

679976

688886

697796

769967

778877

787787

796697

859958

868868

877778

886688

895598

949949

958859

967769

976679

985589

994499

題目分析

解法一:

暴力破解法

既然題目中說了是五位和六位的數字,那麼我們可以直接遍歷從10000到999999的所有數字,從中進行篩選

題目**

#include

using

namespace

std;

int n;

bool flag = false;

bool huiwen(long a)

return a == b;

}bool xiangjia(long a)

if(sum == n)

return

false;

}int main()}}

if(!flag)

cout

<< "-1"

<< endl;

return

0;}

解法二:

暴力破解法雖然簡單但是遍歷10000到999999之間的所有數浪費了很多時間,所以為了降低執行時間,我們將每一位單獨討論首尾相等我們用乙個變數儲存,這樣下來,我們只需遍歷9^3次。

題目**

#includeusing namespace std;

bool flag = false

;void solve(int x,int y,int z,int n)

; for(a[0] = 1

;a[0]<=9;a[0]++)

for(a[1] = 0

;a[1]<=9;a[1]++)

for(a[2] = 0

;a[2]<=9;a[2]++)

if(z == 1)

}else

}}int main()

藍橋杯試題 歷屆試題 郵局

題中的資料量很小,但單純的回溯會超時,所以需要剪枝,這裡減了三個枝。1.當即使所有剩餘點都算上都不能取k個點時。2.當當前點大於k個時。3.當發現加入乙個點後距離陣列沒有變化時,說明這個點可有可無以後不再計算。include include include include using namespa...

藍橋杯歷屆試題 錯誤票據 水題

問題描述 某涉密單位下發了某種票據,並要在年終全部收回。每張票據有唯一的id號。全年所有票據的id號是連續的,但id的開始數碼是隨機選定的。因為工作人員疏忽,在錄入id號的時候發生了一處錯誤,造成了某個id斷號,另外乙個id重號。你的任務是通過程式設計,找出斷號的id和重號的id。假設斷號不可能發生...

藍橋杯刷題

題目 問題描述 給定圓的半徑r,求圓的面積。輸入格式 輸入包含乙個整數r,表示圓的半徑。輸出格式 輸出一行,包含乙個實數,四捨五入保留小數點後7位,表示圓的面積。說明 在本題中,輸入是乙個整數,但是輸出是乙個實數。對於實數輸出的問題,請一定看清楚實數輸出的要求,比如本題中要求保留小數點後7位,則你的...