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 10
1
-2
1

样例输出1[复制]

 
1
1

样例2

样例输入2[复制]

 
2 10
2
-3
1

样例输出2[复制]

 
2
1
2

样例3

样例输入3[复制]

 
2 10
1
3
2

样例输出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 }
原文地址:https://www.cnblogs.com/InWILL/p/5918358.html