首页 > 代码库 > NOIP2014 解方程

NOIP2014 解方程

描述

已知多项式方程:

a0+a1x+a2x2+...+anxn=0a0+a1x+a2x2+...+anxn=0

求这个方程在[1, m]内的整数解(n 和 m 均为正整数)。

格式

输入格式

输入共 n+2 行。

第一行包含 2 个整数 n、m,每两个整数之间用一个空格隔开。

接下来的 n+1 行每行包含一个整数,依次为a0,a1,a2,...,ana0,a1,a2,...,an

输出格式

第一行输出方程在[1, m]内的整数解的个数。

接下来每行一个整数,按照从小到大的顺序依次输出方程在[1, m]内的一个整数解。

样例1

样例输入1[复制]

 
2 101-21

样例输出1[复制]

 
11

样例2

样例输入2[复制]

 
2 102-31

样例输出2[复制]

 
212

样例3

样例输入3[复制]

 
2 10132

样例输出3[复制]

 
0

限制

对于 30%的数据,0 < n ≤ 2, |ai||ai| ≤ 100,anan ≠ 0, m ≤ 100;

对于 50%的数据,0 < n ≤ 100, |ai||ai| ≤ 1010010100 ,anan ≠ 0,m ≤ 100;

对于 70%的数据,0 < n ≤ 100, |ai||ai| ≤ 10100001010000 ,anan ≠ 0,m ≤ 10000;

对于 100%的数据,0 < n ≤ 100, |ai||ai| ≤ 10100001010000 ,anan ≠ 0,m ≤ 1000000。

 

今天先水个30分。。。

 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5  6 long long n,m; 7 long long A[101]; 8  9 long long i;10 vector<long long> T;11 12 long long dfs(long long p)13 {14     if(p==0) return A[n];15     return dfs(p-1)*i+A[n-p];16 }17 18 int main()19 {20     cin>>n>>m;21     for(long long i=0;i<=n;i++) cin>>A[i];22     for(i=1;i<=m;i++)23         if(dfs(n)==0) T.push_back(i);24     cout<<T.size()<<endl;25     for(long long i=0;i<T.size();i++)26         cout<<T[i]<<endl;27     return 0;28 }

 

NOIP2014 解方程