解方程

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 钻石 Diamond

 
 

 
题目描述 Description

输入描述 Input Description

输入文件名为equation.in。

输入共n+2行。

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

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

输出描述 Output Description

输出文件名为equation.out。

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

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

样例输入 Sample Input

equation.in

equation.out

2 10

1

-2

1

1

1

equation.in

equation.out

2 10

2

-3

1

2

1

2

样例输出 Sample Output

equation.in

equation.out

2 10

1

3

2

0

数据范围及提示 Data Size & Hint

/*
将每一项的系数都模一个质数,
若一个数是方程的解,那么在模的意义下它也是方程的解(但反过来不一定)。
为了解决这个“不一定”的问题,多选几个质数,
若一个数在不同模的意义下都是方程的解,那么它有极大的几率就是原方程的解了。
*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>using namespace std;
const int mod[8]= {0,13,7901,3947,131,6977,22877,49997};
char s[105][1000010];
int n,m;
int num[9][120];bool solve(int od,int x)
{int i,j;long long tmp=0;long long pw=1;for(i=0; i<=n; ++i){if(s[i][0]=='-') tmp=(tmp-pw*num[od][i])%mod[od];else tmp=(tmp+pw*num[od][i])%mod[od];pw=pw*x%mod[od];}while(tmp<0) tmp+=mod[od];if(!tmp)return true;return false;
}int res[1000010];
int ans[1000010],act=0;int main()
{int i,j,k;scanf("%d%d",&n,&m);for(i=0; i<=n; ++i)scanf("%s",s[i]);int len[101];for(i=0; i<=n; ++i)len[i]=strlen(s[i]);for(k=1; k<=7; ++k)for(i=0; i<=n; ++i){for(j=0; j<len[i]; ++j){if(s[i][j]=='-')continue;num[k][i]=num[k][i]*10+s[i][j]-'0';num[k][i]%=mod[k];}}for(k=1;k<=7;++k)for(i=0; i<mod[k] && i<=m; ++i){if(!solve(k,i))continue;++res[i];for(j=i+mod[k]; j<=m; j+=mod[k]){res[j]++;}}for(i=1; i<=m; ++i)if(res[i]==7)ans[++act]=i;printf("%d\n",act);for(i=1; i<=act; ++i)printf("%d\n",ans[i]);return 0;
}

转载于:https://www.cnblogs.com/L-Memory/p/7725893.html

解方程 2014NOIP提高组 (数学)相关推荐

  1. [DP]Luogu 2014NOIP提高组 飞扬的小鸟题解

    2014NOIP提高组飞扬的小鸟题解 题目描述 Flappy Bird是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一 ...

  2. Java解方程zu q_关于数学:Java中的微分方程

    我正在尝试在Java中创建一个简单的SIR流行病模型仿真程序. 基本上,SIR由三个微分方程组定义: S'(t)=-l(t)* S(t) I'(t)= l(t)* S(t)-g(t)* I(t) R' ...

  3. Java解P2678 [NOIP2015 提高组] 跳石头,有图有注释,通俗易懂

    01.题目及链接 题目链接:https://www.luogu.com.cn/problem/P2678 02.解题思路 对两个石头之间的最短距离mid进行二分枚举,初始时left=0,right=起 ...

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

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

  5. 九年级数学解方程50道_初中数学公式中考知识点总结,初三数学上册,九年级数学上册...

    初中数学公式中考知识点总结,初三数学上册,九年级数学上册 第二十一章 一元二次方程 知识点: 一元二次方程的解法 1.直接开平方法 利用平方根的定义直接开平方求一元二次方程的解的方法叫做直接开平方法, ...

  6. 【pyhton解决数学问题】2用python解方程

    目录 1Sympy的基本概念 1符号计算 2计算机代数系统 3实际解方程 1把未知数设为符号 2用solve()解方程 1解一元一次方程 2解二元一次方程组 3解决一元二次方程 总结 哈喽,大家好! ...

  7. matlab中欠定方程组超定方程组_学会这些三元一次方程组的解法思路与运用,初中不再怕解方程...

    关注我,每日推送小学到初中各科学习.记忆方法.各科详细资料,帮助孩子轻松拿高分! 在七年级下册数学的学习中,我们学完二元一次方程之后就会马上学习三元一次方程,伴随而来的就是要掌握如何解三元一次方程组. ...

  8. NOIP 2018提高组复赛C/C++试题及答案详解

    NOIP 2018提高组历年真题 CCF NOIP2018 初赛提高组 C++语言试题 第 1 页,共9 页 第二十四届全国青少年信息学奥林匹克联赛初赛 提高组 C++语言试题 竞赛时间:2018 年 ...

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

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

最新文章

  1. Varnish Cache 3.0.0安装
  2. Python基础教程:线程操作(oncurrent模块)详解
  3. CodeForces 901C Bipartite Segments
  4. 这个故事告诉你,拥有吃不胖的超能力就无忧无虑
  5. CnCiswumWN
  6. lhdc协议是什么_无线耳机标注的编码是什么意思?看懂了会少很多坑
  7. centos7 禁止ip访问_centos7下使用iptables屏蔽所有中国IP
  8. mysql数字加减乘除_mysql加减乘除
  9. QT Designer中编辑菜单栏技巧
  10. 推荐 :强化学习必知二要素——计算效率和样本效率
  11. 线性代数05 齐次/非齐次线性方程组的具体解集
  12. 青铜器RDM与PTC Windchill协同构建货真价实的PLM解决方案
  13. 如何设定合理的安全工作指标
  14. java华氏温度与摄氏度的互相转换
  15. MYSQL 命令行大全 (简洁、明了、全面)
  16. 大学生无线耳机怎么选?内行推荐四款高性价比蓝牙耳机
  17. UE4 让材质的UV动起来
  18. 深入剖析虚拟内存工作原理
  19. Unity角色模型由Generic改成Humanoid之后hips节点动画失效的问题
  20. iOS开发者对苹果公司发起集体诉讼 指控其违反竞争法

热门文章

  1. 【收藏】deepin环境安装nodejs
  2. k8s pod资源限制策略:requests、limits配置示例
  3. go语言快速开发入门示例
  4. scala中_下划线的使用
  5. Scala中的四种访问权限
  6. 【视频】vue表单提交
  7. python自己创建模块_创建并发布自己的python模块
  8. Hikari连接池配多大合适
  9. 自定义控件——旋转菜单
  10. QT pro文件解析