描述

已知多项式方程:

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。

来源

NOIP2014 提高组 Day2


初看本题,知道要取模一个素数但是有两个地方没考虑

1一个素数不够用,可能要出错,用5个素数就差不多了,这五个素数可以比较小10^4级就可以了

2根据题意如果f(x)=0,那么f(x+p)=0,后面的就不用算了

AC代码

 #include<cstdio>
#include<iostream>
#define M 1000002
#define N 102
using namespace std;
int n,m;
int ans[M];
int a[N][];
int t[][];
int c[][];
int p[]={,,,,};
int cal(int y)
{
int tmp=;
for(int i=;i<=n;i++)
tmp=(tmp+a[i][y]*t[i][y])%p[y];
if(tmp<)//减法取余要注意可能减到负数
tmp+=p[y];
return tmp;
}
bool check(int mm)
{
for(int i=;i<;i++)
if(c[mm%p[i]][i]!=)
return false;
return true;
}
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)//读大系数
{
char ai[];
scanf("%s",ai);
for(int k=;k<;k++)
{
int factor=;
int j=;
if(ai[]=='-')j++;
for(;;j++)
{
if(ai[j]<=''&&ai[j]>='')
factor=(factor*+ai[j]-'')%p[k];
else break;
}
if(ai[]=='-')
factor*=-;
a[i][k]=factor;
}
}
for(int i=;i<;i++)
for(int j=;j<=p[i];j++)
{
t[][i]=;//第一个系数为a0*x^0
for(int k=;k<=n;k++)t[k][i]=(t[k-][i]*j)%p[i];
c[j][i]=cal(i);
}
for(int i=;i<=m;i++)
if(check(i))
ans[++ans[]]=i;
cout<<ans[]<<endl;
for(int i=;i<=ans[];i++)
printf("%d\n",ans[i]);
return ;
}

vijos1910解方程的更多相关文章

  1. vijos P1915 解方程 加强版

    背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...

  2. HDU 4793 Collision --解方程

    题意: 给一个圆盘,圆心为(0,0),半径为Rm, 然后给一个圆形区域,圆心同此圆盘,半径为R(R>Rm),一枚硬币(圆形),圆心为(x,y),半径为r,一定在圆形区域外面,速度向量为(vx,v ...

  3. codevs3732==洛谷 解方程P2312 解方程

    P2312 解方程 195通过 1.6K提交 题目提供者该用户不存在 标签数论(数学相关)高精2014NOIp提高组 难度提高+/省选- 提交该题 讨论 题解 记录   题目描述 已知多项式方程: a ...

  4. [NOIP2014]解方程

    3732 解方程  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 输入描述 Input Descrip ...

  5. bzoj 3751: [NOIP2014]解方程 同余系枚举

    3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...

  6. Ural 1046 Geometrical Dreams(解方程+计算几何)

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1046 参考博客:http://hi.baidu.com/cloudygoose/item ...

  7. 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...

  8. 5.5Python数据处理篇之Sympy系列(五)---解方程

    目录 目录 前言 (一)求解多元一次方程-solve() 1.说明: 2.源代码: 3.输出: (二)解线性方程组-linsolve() 1.说明: 2.源代码: 3.输出: (三)解非线性方程组-n ...

  9. python 解方程

    [怪毛匠子=整理] SymPy 库 安装 sudo pip install sympy x = Symbol('x') 解方程 solve([2 * x - y - 3, 3 * x + y - 7] ...

随机推荐

  1. String类的构造方法详解

    package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...

  2. win10家庭版快速升级专业版

    win10家庭普通版升级专业版方法: 1.点击“开始”,选择控制面板. 2.点击“系统与安全”,选择“Windows Anytime Upgrade”.(或者:单击「开始」按钮,在搜索框中,键入any ...

  3. Singleton in C++11 style

    #include <iostream> #include <memory> #include <mutex> class SingletonOld { static ...

  4. Android 7.0 UICC 分析(四)

    本文讲解SIMRecords /frameworks/opt/telephony/src/java/com/android/internal/telephony/uicc/SIMRecords.jav ...

  5. NGUI 使用EventDelegate.Add与UIInput.onSubmit、UIInput.onChange限定编辑框中的内容

    Unity中,使用NGUI,通常为某个控件(如按钮)绑定事件(单击.双击.拖拽.滚轮.选择等)都是用UIEventListener,比如: public void Bind() { UIEventLi ...

  6. SVM学习笔记(二):什么是交叉验证

    交叉验证:拟合的好,同时预测也要准确 我们以K折交叉验证(k-folded cross validation)来说明它的具体步骤.{A1,A2,A3,A4,A5,A6,A7,A8,A9} 为了简化,取 ...

  7. 发送短信MFMessageComposeViewController

    if([MFMessageComposeViewController canSendText]) { MFMessageComposeViewController * controller = [[M ...

  8. Reverse链表 非递归实现

    #include<iostream> struct node{ int payload; node* next; }; void bianli(node* head){ node* ite ...

  9. Global.asax 文件是什么

    Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序安全性以及其它一些任务.下面让我们详细看 ...

  10. 浅淡HTML5移动Web开发

    说实话,我们这次开发移动端的项目,整个项目组的人都是第一次,最初立项的时候为是选择native app和web app还争论了一番,最后综合考虑,我们选择了web(我们选择了h5)开发.但从这两种开发 ...