题目:https://www.luogu.org/problemnew/show/P2312

https://www.lydsy.com/JudgeOnline/problem.php?id=3751

10^10000 太大了,高精度也很难做,怎么办?

注意我们要求的是方程的值 = 0 的解,不妨在取模意义下做,因为真正使方程 = 0 的解在模意义下也是 0;

然后可以用秦九韶算法,O(n) 算每个枚举的答案;

避免出错要多对几个数取模,就像哈希时有多个模数一样;

据说模数大小在 2e4 左右比较好;

模数多了会 T,少了会错,最后取了5个才勉强过去;

考试时遇到这种题怎么估计...

代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. using namespace std;
  6. typedef long long ll;
  7. int const maxn=,maxm=1e6+;
  8. int n,m,a[][maxn],p[]={,,,,,};
  9. int pri[maxm],cnt,ans[maxm],c=;
  10. bool vis[maxm],fl[][];
  11. int main()
  12. {
  13. scanf("%d%d",&n,&m);
  14. for(int i=;i<=n;i++)
  15. {
  16. int f=; char ch=getchar();
  17. while(ch<''||ch>''){if(ch=='-')f=-; ch=getchar();}
  18. while(ch>=''&&ch<='')
  19. {
  20. for(int k=;k<=c;k++)
  21. a[k][i]=(a[k][i]*+ch-'')%p[k];
  22. ch=getchar();
  23. }
  24. for(int k=;k<=c;k++)a[k][i]=(a[k][i]*f+p[k])%p[k];//!
  25. }
  26. int cnt=;
  27. for(int k=;k<=c;k++)
  28. for(int x=;x<p[k]&&x<=m;x++)//
  29. {
  30. int ret=;
  31. for(int i=n;i>=;i--)ret=((ll)ret*x%p[k]+a[k][i])%p[k];
  32. if(ret)fl[k][x]=;
  33. }
  34. for(int i=;i<=m;i++)
  35. {
  36. bool flag=;
  37. for(int k=;k<=c;k++)if(fl[k][i%p[k]]){flag=; break;};
  38. if(!flag)ans[++cnt]=i;
  39. }
  40. printf("%d\n",cnt);
  41. for(int i=;i<=cnt;i++)printf("%d\n",ans[i]);
  42. return ;
  43. }

洛谷 P2312 & bzoj 3751 解方程 —— 取模的更多相关文章

  1. 洛谷 2312 / bzoj 3751 解方程——取模

    题目:https://www.luogu.org/problemnew/show/P2312 https://www.lydsy.com/JudgeOnline/problem.php?id=3751 ...

  2. 洛谷P2312 解方程题解

    洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...

  3. 【洛谷p2312】解方程

    (清明培训qwq,明天就要回学校了qwq拒绝) 行吧我洛谷都四天没碰了 解方程[传送门] 算法标签: (作为一个提高+省选-的题) 丁大佬真的很有幽默感emmm: #include <cstdi ...

  4. 洛谷 P2312 解方程 解题报告

    P2312 解方程 题目描述 已知多项式方程: \(a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\)求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) 均为正整 ...

  5. 洛谷 P2312 解方程

    题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...

  6. 洛谷 P2312 解方程 题解

    P2312 解方程 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 [1,m][1,m] 内的整数解(\(n\) 和 \(m\) 均为 ...

  7. 洛谷P2312解方程

    传送门 思路分析 怎么求解呢? 其实我们可以把左边的式子当成一个算式来计算,从1到 $ m $ 枚举,只要结果是0,那么当前枚举到的值就是这个等式的解了.可以通过编写一个 $ bool $ 函数来判断 ...

  8. 洛谷P2312 解方程(暴力)

    题意 题目链接 Sol 出这种题会被婊死的吧... 首先不难想到暴力判断,然后发现连读入都是个问题. 对于\(a[i]\)取模之后再判断就行了.注意判断可能会出现误差,可以多找几个模数 #includ ...

  9. 洛谷 4106 / bzoj 3614 [HEOI2014]逻辑翻译——思路+类似FWT

    题目:https://www.luogu.org/problemnew/show/P4106 https://www.lydsy.com/JudgeOnline/problem.php?id=3614 ...

随机推荐

  1. eclipse perl配置

    先下载jdk,如果jdk装的是32位,eclipse也要下载32位的,64位也是一样.我用的是jdk7 64位. 下载eclipse,去官网上下载最新的http://www.eclipse.org/d ...

  2. 1. 垃圾收集简介 - GC参考手册

    说明: 在本文中, Garbage Collection 翻译为 “垃圾收集”, garbage collector 翻译为 “垃圾收集器”; 一般认为, 垃圾回收 和 垃圾收集 是同义词. Mino ...

  3. UVa 12333 - Revenge of Fibonacci manweifc(模拟加法竖式 & 字典树)

    题意: 给定n个(n<=40)数字, 求100000个以内有没有前面n个数字符合给定的数字的fibonacci项, 如果有, 给出最小的fibonacci项, 如果没有, 输出-1. 分析: 可 ...

  4. SQlServer中的MD5加密

    SELECT sys.fn_varbintohexstr(HASHBYTES('MD5', '我'));

  5. thinkphp整合系列之微信公众号支付

    <?phperror_reporting(E_ALL);ini_set('display_errors', '1');// 定义时区ini_set('date.timezone','Asia/S ...

  6. POJ-3041 Asteroids,二分匹配解决棋盘问题。

    Asteroids Time Limit: 1000MS   Memory Limit: 65536K       Description Bessie wants to navigate her s ...

  7. [luoguP3572] [POI2014]PTA-Little Bird(DP + 单调队列)

    传送门 DP方程 f[i] = f[j] + (a[j] <= a[i]) ( i - k < j < i ) 要使 f[i] 最小,需要等号后面的值最小,可以用单调队列来维护. 至 ...

  8. 在springBoot与quartz 整合中 @Transaction 失效

    问题1::springBoot在与quartz 整合时,使用@Transaction 注解时事务失效 解决方案:创建一个类使用@component被spring管理 ,使用@Transaction标识 ...

  9. P1665 正方形计数

    P1665 正方形计数 题目描述 给定平面上N个点,你需要计算以其中4个点为顶点的正方形的个数.注意这里的正方形边不一定需要和坐标轴平行. 输入输出格式 输入格式: 第一行一个数X,以下N个点的坐标. ...

  10. php配置(php7.3)

    [PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, general ...