本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大家订阅我的专栏:算法题解:C++与Python实现!
附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总
【题目来源】
洛谷:[P2312 NOIP 2014 提高组] 解方程 - 洛谷
【题目描述】
已知多项式方程:
a 0 + a 1 x + a 2 x 2 + ⋯ + a n x n = 0 a_0+a_1x+a_2x^2+\cdots+a_nx^n=0a0+a1x+a2x2+⋯+anxn=0
求这个方程在[ 1 , m ] [1,m][1,m]内的整数解(n nn和m mm均为正整数)。
【输入】
输入共n + 2 n + 2n+2行。
第一行包含2 22个整数n , m n,mn,m,每两个整数之间用一个空格隔开。
接下来的n + 1 n+1n+1行每行包含一个整数,依次为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【算法标签】
#提高+# #模拟#
【代码详解】
#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=105,M=1000005,mod=1e9+7;intn,m;// n: 多项式次数, m: 检查范围上限inta[N];// 存储多项式系数intans[M];// 存储满足条件的x值intnum;// 计数器,记录满足条件的x的数量// 快速读入函数,支持负数,并在读入时取模intread(){intx=0,f=1;// x: 结果, f: 符号标志charch=getchar();// 跳过空白字符,处理负号while(ch<'0'||ch>'9'){if(ch=='-'){f=-1;}ch=getchar();}// 读取数字while(ch>='0'&&ch<='9'){x=(x*10+ch-48)%mod;// 字符转数字,并取模ch=getchar();}returnx*f;// 返回结果}signedmain(){n=read();// 输入多项式次数m=read();// 输入检查范围上限// 输入多项式系数 a[0] 到 a[n]for(inti=0;i<=n;i++){a[i]=read();}// 检查从1到m的每个整数xfor(inti=1;i<=m;i++){// 使用秦九韶算法计算多项式值intx=a[n];// 初始化结果为最高次项系数for(intj=1;j<=n;j++){// 秦九韶算法递推计算: x = x * i + a[n-j]x=(x*i%mod+a[n-j])%mod;}// 如果多项式值为0,记录这个xif(x==0){ans[++num]=i;}}// 输出满足条件的x的数量cout<<num<<endl;// 输出所有满足条件的xfor(inti=1;i<=num;i++){cout<<ans[i]<<endl;}return0;}【运行结果】
2 10 1 -2 1 1 1