题解:洛谷 P2312 [NOIP 2014 提高组] 解方程
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷[P2312 NOIP 2014 提高组] 解方程 - 洛谷【题目描述】已知多项式方程a 0 a 1 x a 2 x 2 ⋯ a n x n 0 a_0a_1xa_2x^2\cdotsa_nx^n0a0a1xa2x2⋯anxn0求这个方程在[ 1 , m ] [1,m][1,m]内的整数解n nn和m mm均为正整数。【输入】输入共n 2 n 2n2行。第一行包含2 22个整数n , m n,mn,m每两个整数之间用一个空格隔开。接下来的n 1 n1n1行每行包含一个整数依次为a 0 , a 1 , a 2 … a n a_0,a_1,a_2\ldots a_na0,a1,a2…an。【输出】第一行输出方程在[ 1 , m ] [1,m][1,m]内的整数解的个数。接下来每行一个整数按照从小到大的顺序依次输出方程在[ 1 , m ] [1,m][1,m]内的一个整数解。【输入样例】2 10 1 -2 1【输出样例】1 1【算法标签】#提高# #模拟#【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN105,M1000005,mod1e97;intn,m;// n: 多项式次数, m: 检查范围上限inta[N];// 存储多项式系数intans[M];// 存储满足条件的x值intnum;// 计数器记录满足条件的x的数量// 快速读入函数支持负数并在读入时取模intread(){intx0,f1;// x: 结果, f: 符号标志charchgetchar();// 跳过空白字符处理负号while(ch0||ch9){if(ch-){f-1;}chgetchar();}// 读取数字while(ch0ch9){x(x*10ch-48)%mod;// 字符转数字并取模chgetchar();}returnx*f;// 返回结果}signedmain(){nread();// 输入多项式次数mread();// 输入检查范围上限// 输入多项式系数 a[0] 到 a[n]for(inti0;in;i){a[i]read();}// 检查从1到m的每个整数xfor(inti1;im;i){// 使用秦九韶算法计算多项式值intxa[n];// 初始化结果为最高次项系数for(intj1;jn;j){// 秦九韶算法递推计算: x x * i a[n-j]x(x*i%moda[n-j])%mod;}// 如果多项式值为0记录这个xif(x0){ans[num]i;}}// 输出满足条件的x的数量coutnumendl;// 输出所有满足条件的xfor(inti1;inum;i){coutans[i]endl;}return0;}【运行结果】2 10 1 -2 1 1 1