zoj 5194 Singles' Day
题目地址:zoj5194
题目大意: 给你b, n, 问以b为进制,n位1111.....排成的数是不是素数。
一开始不知道怎么判断“感觉这么大的数”,额,直接先打出来试一下看看long long 够不够存嘛。
发现只有16 16这一组超过范围了。那么这一组或者是素数或者不是 交两发试一下 或者用BigInteger算一下就好了。
代码:
#include<iostream> #include<cmath> using namespace std; typedef long long inta; bool is_prime(inta n) { for(int i=2;i<=sqrt(n);i++) if(n%i==0) return 0; return 1; } int judge[20][20]; int main() { long long ans=0ll; for(inta b=2;b<=16;b++) for(inta n=1;n<=16;n++) { ans=pow(b,n)-1; ans/=b-1; judge[b][n]=is_prime(ans); } for(int i=2;i<=16;i++) judge[i][1]=0; judge[16][16]=1; int b,n; while(cin>>b>>n) { if(judge[b][n]==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } }
posted on 2014-03-02 16:29 814jingqi的ACM 阅读(107) 评论(0) 编辑 收藏 举报