杭电4569

来源:互联网 发布:淘宝信用积分怎么查看 编辑:程序博客网 时间:2024/05/16 09:10

题目

第一次遍历0—prime,找到一个x使得f(x)%prime==0;然后在x—prime*prime中依次给x增加prime,找到另一个数使得f(x)%(prime*prime)==0,这个数即为要找的数,若没有这样的数,就输出No solution!

#include<iostream>#include<cmath>using namespace std;int main(){//freopen("data.txt","r",stdin);__int64 t,n;cin>>t;for(int i=1;i<=t;i++){cin>>n;__int64 deg[10],prime,ans=0,tmp=0,ok=0;for(int j=0;j<=n;j++)cin>>deg[j];cin>>prime;while(tmp<=prime){ans=0;for(__int64 j=0;j<=n;j++)ans+=deg[j]*pow(1.0*tmp,1.0*n-j);if(ans%prime==0){ok=1;break;}tmp++;}if(!ok) cout<<"Case #"<<i<<": "<<"No solution!"<<endl;else {ok=0;while(tmp<=prime*prime){ans=0;for(int j=0;j<=n;j++)ans+=deg[j]*pow(1.0*tmp,1.0*n-j);if(ans%(prime*prime)==0){ok=1;break;}tmp+=prime;}if(!ok) cout<<"Case #"<<i<<": "<<"No solution!"<<endl;else cout<<"Case #"<<i<<": "<<tmp<<endl;}}}


0 0