Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
神啊 救救我吧~#include<iostream> #include<math.h> #include<stdio.h> using namespace std; int Prime(int x) { int i; if (x==2) { return 1; } if (x%2==0) { return 0; } for (i=3;i<sqrt((float)x);i+=2) { if (x%i==0) { return 0; } } return 1; } int main() { int i; __int64 temp,p,a,a_1000; while(scanf("%I64d %I64d",&p,&a)) { if (p==0&&a==0) break; if (Prime(p)) { cout<<"no"<<endl; continue; } a_1000=a; temp=1; for(i=1;i<1000;i++) { a_1000=(a_1000*a)%p; } for(i=1;i<=p/1000;i++) temp=(temp*a_1000)%p; for(i=1;i<=p%1000;i++) temp=(temp*a)%p; if(temp==a) printf("yse\n"); else printf("no\n"); } return 0; } 这份代码 呈上后 结果是华丽的WA #include<iostream> #include<math.h> #include<stdio.h> using namespace std; int Prime(int x) { int i; if (x==2) { return 1; } if (x%2==0) { return 0; } for (i=3;i<sqrt((float)x);i+=2) { if (x%i==0) { return 0; } } return 1; } int main() { int i; __int64 temp,p,a,a_1000; while(scanf("%I64d %I64d",&p,&a)) { if (p==0&&a==0) break; if (Prime(p)) { cout<<"no"<<endl; continue; } a_1000=a; temp=1; for(i=1;i<1000;i++) { a_1000=(a_1000*a)%p; } for(i=1;i<=p/1000;i++) temp=(temp*a_1000)%p; for(i=1;i<=p%1000;i++) temp=(temp*a)%p; if(temp==a) cout<<"yes"<<endl; else cout<<"no"<<endl; } return 0; } 而这个程序 上交后 居然神奇的AC了 不同的地方只不过是我将c的输出换成了c++的标准输出 但是,这又有什么区别呢 我实在是弄不明白 还请高手指点下 qq:64076241 Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator