PAT (Advanced Level) 1015 Reversible Primes(进制转换)
生活随笔
收集整理的這篇文章主要介紹了
PAT (Advanced Level) 1015 Reversible Primes(进制转换)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:點擊查看
題目大意:現在給出定義“翻轉素數”:在10進制下是素數,并且在D進制下翻轉后回到十進制,還是素數,現在給出一個十進制的數num和進制radix,判斷是否屬于翻轉素數
題目分析:雖然是簡單水題,但還是輸在了閱讀理解和英語上面,一開始實在是沒看懂題目,以為給出的數字就已經是D進制的數了,我還納悶,樣例的23是二進制嗎?怎么每一位上的數都比進制還大,算了不管了,先寫一發,交上去全WA,可是樣例過了啊?于是檢查了半天原來是判斷素數的函數里寫成了i*i<=sqrt(num),emmm,改過來之后樣例跑不出來了,去網上一查才知道題意原來是這樣的,是在D進制下翻轉,而不是在10進制下翻轉,回到這個題目,若要實現太簡單了,先將10進制轉換為D進制,用vector也行,string類也行,把每一位數字儲存起來,翻轉后再乘起來就行了,這個題目就是考察了一個進制轉換,本身不難,但是英語難。。哭了
代碼:
#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; }?
總結
以上是生活随笔為你收集整理的PAT (Advanced Level) 1015 Reversible Primes(进制转换)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT (Advanced Level)
- 下一篇: PAT (Advanced Level)