P2312 解方程
P2312 解方程
我借鉴了一下某位不愿透露姓名的丁大佬的代码,他讲了一遍。。。但是我并没有听懂
这个题目呢我们用到了秦九韶算法
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 把一个n次多项式












代码:
#include <cstdio> const long long Mod = (int)1e9 + 7; const int maxN = 100 + 5; const int maxM = (int)1e6 + 5; int N, M; int arr[maxN]; void Fscan(int &tmpX)
{ int Ch = getchar(), F = ' '; long long tmp = 0; while (Ch < '0' || Ch > '9')
{ F = Ch; Ch = getchar(); } while ('0' <= Ch && Ch <= '9')
{ tmp = ((tmp << 3) + (tmp << 1) + Ch - '0') % Mod; Ch = getchar(); } tmpX = (int)(F == '-' ? -tmp : tmp); } void Read()
{ scanf("%d%d", &N, &M); for (int i = 0; i <= N; ++i) Fscan(arr[i]); } int T, Que[maxM]; long long Calc(const int &X)
{ long long Ans = 0; for (int i = N; i; --i) Ans = ((Ans + (long long)arr[i]) * (long long)X) % Mod; Ans = (Ans + (long long)arr[0]) % Mod; return Ans; } void Solve()
{ for (int i = 1; i <= M; ++i) if (!Calc(i)) Que[++T] = i; } int main() { Read(); Solve(); printf("%d\n", T); for (int i = 1; i <= T; ++i) printf("%d\n", Que[i]); return 0; }

更多精彩