洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
生活随笔
收集整理的這篇文章主要介紹了
洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?P1207 [USACO1.2]雙重回文數 Dual Palindromes
題目描述
如果一個數從左往右讀和從右往左讀都是一樣,那么這個數就叫做“回文數”。例如,12321就是一個回文數,而77778就不是。當然,回文數的首和尾都應是非零的,因此0220就不是回文數。
事實上,有一些數(如21),在十進制時不是回文數,但在其它進制(如二進制時為10101)時就是回文數。
編一個程序,從文件讀入兩個十進制數N (1 <= N <= 15)S (0 < S < 10000)然后找出前N個滿足大于S且在兩種或兩種以上進制(二進制至十進制)上是回文數的十進制數,輸出到文件上。
本問題的解決方案不需要使用大于32位的整型
輸入輸出格式
輸入格式:?
只有一行,用空格隔開的兩個數N和S。
?
輸出格式:?
N行, 每行一個滿足上述要求的數,并按從小到大的順序輸出。
?
輸入輸出樣例
輸入樣例#1:?復制 3 25 輸出樣例#1:?復制 26 27 28說明
題目翻譯來自NOCOW。
USACO Training Section 1.2
思路:模擬
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n,s,num; int prime[100]; int main(){scanf("%d%d",&n,&s);for(int i=s+1;i;i++){if(num==n) break;int tot=0;for(int j=2;j<=10;j++){int k=i,flag=0,pos=0;while(k){prime[++pos]=k%j;k/=j;}for(int l=1;l<=pos/2;l++)if(prime[l]!=prime[pos-l+1])flag=1;if(!flag) tot++;}if(tot>=2) cout<<i<<endl,num++;} }?
轉載于:https://www.cnblogs.com/cangT-Tlan/p/7856122.html
總結
以上是生活随笔為你收集整理的洛谷 P1207 [USACO1.2]双重回文数 Dual Palindromes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [daily] 使用diff和patch
- 下一篇: [AHOI 2016初中组]迷宫