【BZOJ】3751: [NOIP2014]解方程
题意
求\(\sum_{i=0}^{n} a_i x^i = 0\)在\([1, m]\)内的整数解。(\(0 < n \le 100, |a_i| \le 10^{10000}, a_n \neq 0, m \le 1000000\))
分析
神题。
题解
我们可以取几个质数然后对应取模来计算即可。可是在经过变态的加强数据后,不是tle就是wa。
于是我们可以用一个正确率很低的优化。
令$f(x, p) = \sum_{i=0}^{n} a_i x^i \pmod{p} \(,容易知道\)f(x, p) = f(x \ mod \ p, p)\(,所以我们取一些较小的\)p\(,暴力预处理一下然后\)O(1)$就可以判断了。
最后为了提高正确率,我们再将验证通过的数再用大质数验证一次。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int p[4]={11261, 14843, 21893, 9851197}, f[25005][3], n, m, a[105][4], ans[1000015];
int main() {
scanf("%d%d", &n, &m);
for(int i=0; i<=n; ++i) {
char c=getchar();
int f=1;
for(; c<'0'||c>'9'; c=getchar()) {
if(c=='-') {
f=-1;
}
}
for(; c>='0'&&c<='9'; c=getchar()) {
for(int k=0; k<4; ++k) {
a[i][k]*=10;
a[i][k]+=c-'0';
a[i][k]%=p[k];
}
}
if(f==-1) {
for(int k=0; k<4; ++k) {
a[i][k]=p[k]-a[i][k];
}
}
}
for(int k=0; k<3; ++k) {
for(int x=1; x<p[k]; ++x) {
for(int i=0, now=1; i<=n; ++i, now=now*x%p[k]) {
f[x][k]+=now*a[i][k]%p[k];
if(f[x][k]>=p[k]) {
f[x][k]-=p[k];
}
}
}
}
int cnt=0;
for(int i=1; i<=m; ++i) {
bool flag=1;
for(int k=0; k<3; ++k) {
if(f[i%p[k]][k]) {
flag=0;
break;
}
}
if(flag) {
int ret=0;
for(int j=0, now=1; j<=n; ++j, now=(ll)now*i%p[3]) {
ret+=(ll)now*a[j][3]%p[3];
if(ret>=p[3]) {
ret-=p[3];
}
}
if(ret==0) {
ans[cnt++]=i;
}
}
}
printf("%d\n", cnt);
for(int i=0; i<cnt; ++i) {
printf("%d\n", ans[i]);
}
return 0;
}
【BZOJ】3751: [NOIP2014]解方程的更多相关文章
- BZOJ 3751: [NOIP2014]解方程 数学
3751: [NOIP2014]解方程 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=3751 Description 已知多项式方程: ...
- bzoj 3751: [NOIP2014]解方程 同余系枚举
3.解方程(equation.cpp/c/pas)[问题描述]已知多项式方程:a ! + a ! x + a ! x ! + ⋯ + a ! x ! = 0求这个方程在[1, m]内的整数解(n 和 ...
- bzoj 3751: [NOIP2014]解方程
Description 已知多项式方程: a0+a1x+a2x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 解题报告: 这题比较诡,看到高精度做不了,就要想到 ...
- bzoj 3751: [NOIP2014]解方程【数学】
--我真是太非了,自己搞了7个质数都WA,从别人那粘5个质数就A了-- 就是直接枚举解,用裴蜀定理计算是否符合要求,因为这里显然结果很大,所以我们对多个质数取模看最后是不是都为0 #include&l ...
- 【BZOJ】3751: [NOIP2014]解方程【秦九韶公式】【大整数取模技巧】
3751: [NOIP2014]解方程 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 4856 Solved: 983[Submit][Status ...
- LOJ2503 NOIP2014 解方程 【HASH】
LOJ2503 NOIP2014 解方程 LINK 题目大意就是给你一个方程,让你求[1,m]中的解,其中系数非常大 看到是提高T3还是解方程就以为是神仙数学题 后来研究了一下高精之类的算法发现过不了 ...
- [NOIP2014]解方程
3732 解方程 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入描述 Input Descrip ...
- [BZOJ3751][NOIP2014] 解方程
Description 已知多项式方程:a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). Input 第一行包含2个整数n.m,每两个 ...
- 【bzoj3751】[NOIP2014]解方程 数论
题目描述 已知多项式方程: a0+a1*x+a2*x^2+...+an*x^n=0 求这个方程在[1,m]内的整数解(n和m均为正整数). 输入 第一行包含2个整数n.m,每两个整数之间用一个空格隔开 ...
随机推荐
- 多光谱图像数据库, Multispectral images databses
1. https://scien.stanford.edu/index.php/hyperspectral-image-data/ 2. http://www.cs.columbia.edu/CAVE ...
- flash_header.S ( freescale imx6 board)
/* * Copyright (C) 2011-2012 Freescale Semiconductor, Inc. * * This program is free software; you ca ...
- C#高级编程笔记 Day 8, 2016年9月 28日 (数组)
1.数组的初始化 声明了数组后,就必须为数组分配内存,以保存数组的所有元素.数组是引用类型,所以必须给它分配堆上的内存,为此,应使用 new 运算符,指定数组中元素的类型和数量来初始化数组的变量.若使 ...
- rcnn学习(六):imdb.py学习
# -------------------------------------------------------- # Fast R-CNN # Copyright (c) 2015 Microso ...
- codeigniter钩子的使用
CodeIgniter 的钩子功能,使得我们可以在不修改系统核心文件的基础上,来改变或增加系统的核心运行功能.可是钩子究竟该怎么用呢?虽然不是很难,不过很多刚用ci的朋友可能还是不明白怎么用. 通过本 ...
- java程序打包成jar
1. 建立文件夹:proj,在该文件夹下建立3个子文件夹:lib,src 2. 在lib文件夹中放置依赖的jar包 3. 在src中放置类文件:com.cnjava.demo.Main.java 4. ...
- centOS 虚拟机设置固定IP:图形化设置
右键单击图形化标志,Edit Connection 设置一下就可以了.
- git 入门操作
从已有的GIT仓库获取最新代码 git clone url 建立本地仓库,并提交至git-hub 生成ssh的公钥私钥对:ssh-keygen 必须把这两个文件放到当前用户目录的“.ssh”目录下才能 ...
- nginx+webpy配置
之前搞app时候学的webpy,一直用的自带webserver,最近研究nginx一段时间,决定二者结合玩一下~ 把搭建的要点总结下,说不定哪天还得用——其实平时手挺懒的... 1 必备模块和背景知识 ...
- currentColor-CSS3非常有用的变量
一.currentColor-简介 currentColor顾名思意就是“当前颜色”,准确讲应该是“当前的文字颜色”,例如: .xxx { border: 1px solid currentColor ...