回文素數與接水問題(OJ)

2022-06-06 04:00:11 字數 1151 閱讀 2275

寫兩個關於oj上的題目:

回文素數

描述乙個數如果從左往右讀和從右往左讀數字是相同的,則稱這個數是回文數,如121,1221,15651都是回文數。給定位數n,找出所有既是回文數又是素數的n位十進位制數。(注:不考慮超過整型數範圍的情況)。

輸入位數n,其中1<=n<=9。

輸出第一行輸出滿足條件的素數個數。

第二行按照從小到大的順序輸出所有滿足條件的素數,兩個數之間用乙個空格區分。

樣例輸入

1樣例輸出

42 3 5 7

我覺得判斷乙個數是否為回文素數,可以進行兩步判斷,判斷回文與判斷素數,根據這兩種判斷順序的不同可以有兩種寫法,我按的先回文後素數進行判斷:不過。。。

wrong answer 九分:

下面是我的程式(寫的比較麻煩,但是思路還是容易懂的,很多地方存在重複,可以進行合併從而減少很多**行數(這裡沒有寫到)):

(通過測試還發現偶數字的回文數似乎都不是素數。。。)

#include#include#include#includeusing namespace std;

int a[100001],b[100001];

bool fn(int &z);

int main()

;using namespace std;

int main()

if(r[b]==0)

g++;

}t=a;

if(g==m)

break;

}cout《分析:

一種是接水人數n<=水龍頭個數m,此時不用多說接水時間就是接水時間最長的那位同學所用的時間;

另一種就是接水人數n>水龍頭個數m時:

s=s+r[c];

s代表接水的總時長;

a==r[b];代表在第a秒時,0~m個水龍頭接水時第b個同學完成接水,r[b]=r[v]+a;代表第m+1位同學到第b個水龍頭開始接水,兩位同學接水總時長r[b]=r[v]+a;此時自動跳轉到下一位同學,v++;

if(g= =m)則代表所有同學都排到了水龍頭,接到了水。

b號水龍頭自動清空,則g++計數;if(g ==m)則所有水龍頭都自動清空,即所有水龍頭在接水的同學為空,即此時所有同學都接滿了水,將t=a;break;輸出時間t即可。

南陽OJ 素數距離問題

素數距離問題 描述 現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入 第一行給出測試資料組數n 0 接下來的n行每行有乙個整數m 0 輸出 每行輸出兩...

南陽OJ 素數距離問題

描述現在給出你一些數,要求你寫出乙個程式,輸出這些整數相鄰最近的素數,並輸出其相距長度。如果左右有等距離長度素數,則輸出左側的值及相應距離。如果輸入的整數本身就是素數,則輸出該素數本身,距離輸出0 輸入第一行給出測試資料組數n 0輸出 每行輸出兩個整數 a b.其中a表示離相應測試資料最近的素數,b...

南洋理工OJ 24 素數距離問題

這道題的難點在於對邊界情況的考慮 如下 include include using namespace std bool isprime unsigned long n 判斷是否為素數的函式 else return true int main else while isprime j 找數字右邊最近...