寫兩個關於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 找數字右邊最近...