洛谷 P2312 解方程
来源:互联网 发布:c语言中预处理命令 编辑:程序博客网 时间:2024/06/05 04:55
题目描述
已知多项式方程:
a0+a1x+a2x^2+..+anx^n=0
求这个方程在[1, m ] 内的整数解(n 和m 均为正整数)
输入输出格式
输入格式:
输入文件名为equation .in。
输入共n + 2 行。
第一行包含2 个整数n 、m ,每两个整数之间用一个空格隔开。
接下来的n+1 行每行包含一个整数,依次为a0,a1,a2..an
输出格式:
输出文件名为equation .out 。
第一行输出方程在[1, m ] 内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m ] 内的一个整数解。
输入输出样例
输入样例#1:
2 10
1
-2
1
输出样例#1:
1
1
输入样例#2:
2 10
2
-3
1
输出样例#2:
2
1
2
输入样例#3:
2 10
1
3
2
输出样例#3:
0
说明
对于30%的数据:0< n <=2,|ai|<=100,an!=0,m<100
对于50%的数据:0< n<=100,|ai|<=10^100,an!=0,m<100
对于70%的数据:0< n<=100,|ai|<=10^10000,an!=0,m<10000
对于100%的数据:0< n<=100,|ai|<=10^10000,an!=0,m<1000000
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;#define MAXN 1000010const int prime[]={10007,10117,30071};#define LL long longint n,m,cnt[MAXN];LL a[110][5];bool f[100001][5];char s[10010];bool calc(int value,int j){ LL tmp=0; for(int i=n;i>=0;--i) tmp=(tmp*value+a[i][j])%prime[j]; return tmp!=0;}inline void read(int &x){ x=0; int f=1; char c=getchar(); while(c>'9'||c<'0'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=x*10+c-'0'; c=getchar(); } x*=f;}int main(){ read(n),read(m); for(int i=0;i<=n;++i){ scanf("%s",s); int len=strlen(s),sign=1; for(int l=0;l<len;++l){ if(s[l]=='-') sign=-1; else for(int j=0;j<3;++j) a[i][j]=(a[i][j]*10+s[l]-'0')%prime[j]; } if(sign==-1) for(int j=0;j<3;++j) a[i][j]=prime[j]-a[i][j]; } for(int j=0;j<3;++j) for(int i=0;i<prime[j];++i) f[i][j]=calc(i,j); for(int i=1;i<=m;++i){ bool flag=true; for(int j=0;j<3;++j) if(f[i%prime[j]][j]){ flag=false; break; } if(flag) cnt[++cnt[0]]=i; } printf("%d\n",cnt[0]); for(int i=1;i<=cnt[0];++i) printf("%d\n",cnt[i]); return 0;}
//秦久韶算法 n*m T掉两个点 注意读入时取模 #include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;#define LL long long#define INF 999999999#define Mod 1000000007#define me(a,b) memset(a,b,sizeof a )inline LL read(LL &x){ x=0; LL f=1; char c=getchar(); while(c>'9'||c<'0'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=x*10+c-'0'; x%=Mod; c=getchar(); } x*=f;}const int MAXN = 1000100;LL a[110],n,m,ans[MAXN],cnt;LL Fast_Pow(LL val){ LL ret=0; for(int i=n+1;i>=1;--i){ ret=ret*val+a[i]; ret%=Mod; } return ret;}int main(){ read(n),read(m); for(int i=1;i<=n+1;++i) read(a[i]); for(int i=1;i<=m;++i) if(Fast_Pow(i)==0) ans[++cnt]=i; printf("%lld\n",cnt); for(int i=1;i<=cnt;++i) printf("%lld\n",ans[i]); return 0;}
阅读全文
0 0
- 洛谷 P2312 解方程
- 洛谷 P2312 解方程
- 洛谷 P2312 解方程
- 解方程 洛谷p2312
- 洛谷 P2312 解方程
- 【bzoj3751】【洛谷P2312】【NOIP2014】解方程
- 洛谷 P2312 [NOIP2014 D2T3] 解方程
- 数学——洛谷 P2312 解方程
- 洛谷P2312:解方程 (Hash+数学)
- 洛谷P2312 解方程(NOIp2014)
- [P2312][NOIP2014]解方程
- 刷题记录-P2312 解方程
- 洛谷1771 方程的解
- 解方程
- 解方程
- 解方程
- 解方程
- 解方程
- SwitchButton平滑按钮的实现
- 复习之HTML(1)
- 2017.9.9 图论 — 最小生成树
- SQL Server2005 异常处理机制(Begin try Begin Catch)
- Java-Java I/O 字节流之BufferedReader/BufferedWriter
- 洛谷 P2312 解方程
- MATLAB 三维网图的高级处理
- junit单元测试
- Java虚拟机之运行时数据区
- sqlserver 存储过程 try catch TRANSACTION (转)
- mysql 联表更新查询
- Django入门-2:创建第一个Django项目
- SwipeDelMenuLayout 条目侧滑 条目点击事件无效处理
- Linux iptables详解