PAT (Advanced Level) 1015 Reversible Primes(进制转换)
題目鏈接:點(diǎn)擊查看
題目大意:現(xiàn)在給出定義“翻轉(zhuǎn)素?cái)?shù)”:在10進(jìn)制下是素?cái)?shù),并且在D進(jìn)制下翻轉(zhuǎn)后回到十進(jìn)制,還是素?cái)?shù),現(xiàn)在給出一個(gè)十進(jìn)制的數(shù)num和進(jìn)制radix,判斷是否屬于翻轉(zhuǎn)素?cái)?shù)
題目分析:雖然是簡(jiǎn)單水題,但還是輸在了閱讀理解和英語上面,一開始實(shí)在是沒看懂題目,以為給出的數(shù)字就已經(jīng)是D進(jìn)制的數(shù)了,我還納悶,樣例的23是二進(jìn)制嗎?怎么每一位上的數(shù)都比進(jìn)制還大,算了不管了,先寫一發(fā),交上去全WA,可是樣例過了啊?于是檢查了半天原來是判斷素?cái)?shù)的函數(shù)里寫成了i*i<=sqrt(num),emmm,改過來之后樣例跑不出來了,去網(wǎng)上一查才知道題意原來是這樣的,是在D進(jìn)制下翻轉(zhuǎn),而不是在10進(jìn)制下翻轉(zhuǎn),回到這個(gè)題目,若要實(shí)現(xiàn)太簡(jiǎn)單了,先將10進(jìn)制轉(zhuǎn)換為D進(jìn)制,用vector也行,string類也行,把每一位數(shù)字儲(chǔ)存起來,翻轉(zhuǎn)后再乘起來就行了,這個(gè)題目就是考察了一個(gè)進(jìn)制轉(zhuǎn)換,本身不難,但是英語難。。哭了
代碼:
#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e3+100;bool is_prim(int num) {if(num<2)return false;for(int i=2;i*i<=num;i++)if(num%i==0)return false;return true; } int main() { // freopen("input.txt","r",stdin);int num;while(scanf("%d",&num)!=EOF&&num>=0){int radix;scanf("%d",&radix);if(!is_prim(num)){cout<<"No"<<endl;continue;}string s;while(num){s+=to_string(num%radix);num/=radix;}int sum=0;for(int i=0;i<s.size();i++){sum*=radix;sum+=s[i]-'0';}if(is_prim(sum))cout<<"Yes"<<endl;elsecout<<"No"<<endl;}return 0; }?
總結(jié)
以上是生活随笔為你收集整理的PAT (Advanced Level) 1015 Reversible Primes(进制转换)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT (Advanced Level)
- 下一篇: PAT (Advanced Level)