UVA 1069
来源:互联网 发布:房产拍卖淘宝司法拍卖 编辑:程序博客网 时间:2024/04/30 13:10
题目链接 :http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=255&page=show_problem&problem=3510
题意: 求给你的多项式对于n的取值是否答案总是为整数
做法是把1..k+1全部代入看结果是否都为整数,白书P124页有具体证明
#include <iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#define LL long longusing namespace std;LL d,c[105];char s[10005];LL pow_mod(LL x,LL y){ LL ret=1; while(y){ if(y&1) ret=ret*x%d; y>>=1; x=x*x%d; } return ret;}int main(){ LL ics=0,tmp,tmp2,k,f; while(~scanf("%s",s)){ LL l=strlen(s); if(s[0]=='.') break; memset(c,0,sizeof(c)); LL i=1; k=0; while(i<l){ f=1; if(s[i]==')') break; if(s[i]=='-'||s[i]=='+'){ if(s[i]=='-') f=-1; i++; } tmp=0; while(isdigit(s[i])){ tmp=tmp*10+s[i]-'0'; i++; } if(!tmp) tmp=1; if(s[i]!='n'){ c[0]=f*tmp; break; }else i++; tmp2=0; if(s[i]=='^'){ i++; while(isdigit(s[i])) tmp2=tmp2*10+s[i]-'0',i++; }else tmp2=1; c[tmp2]=f*tmp; if(tmp2>k) k=tmp2; } while(!isdigit(s[i])) i++; d=0; while(isdigit(s[i])&&i<l) d=d*10+s[i]-'0',i++; LL res=0; for(i=1;i<=k+1;i++){ res=0; for(LL j=0;j<=k;j++){ res=(res+c[j]*pow_mod(i,j)+d)%d; } if(res){ break; } } printf("Case %lld: ",++ics); if(i!=k+2) printf("Not always an integer\n"); else printf("Always an integer\n"); } return 0;}
0 0
- UVA 1069
- uva 437 hdu 1069
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- NYOJ 905 卡片游戏
- C#字符串与unicode互相转换
- winform 窗体最大化
- Where is the Marble?
- 关于iOS App Programming
- UVA 1069
- 开发商发行游戏前应注意的五大问题
- Android 之 内存管理
- 使用SSH+VNC实现安全的Linux远程桌面管理
- C#如何判断一个字符串是16进制字符串
- E. Cubes codeforce 180/E
- POJ 3368 Frequent values
- Quartz Core 图层编程
- ArcGIS教程:河网分级