CF1155 E.Guess the Root
时间:2019-11-11
本文章向大家介绍CF1155 E.Guess the Root,主要包括CF1155 E.Guess the Root使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目链接:Click here
题目大意:现在有一个至多11项的多项式\(F(x)\),你可以询问至多50个\(x\),黑盒子会告诉你\(F(x)\)的值,你现在要找到一个\(x\)使得\(F(x)=0\)
Solution:
考虑拉格朗日插值多项式的式子:
\[
F(x)=\sum_{i=0}^n(\prod_{0\le j\le n,i\not =j}\frac{x-x_i}{x_i-x_j})y_i
\]
因为至多11项,所以我们询问11次即可得到这个多项式
由于\(x<1e6+3\),得到多项式后我们暴力枚举\(x\)计算\(F(x)\)即可
Code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e6+3;
int p[11];
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-f;ch=getchar();}
while(isdigit(ch)){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int qpow(int a,int b){
int re=1;
while(b){
if(b&1) re=(re*1ll*a)%mod;
b>>=1;a=(a*1ll*a)%mod;
}return re%mod;
}
int query(int x){
printf("? %d\n",x);fflush(stdout);
int val=read();return val;
}
void write(int x){
printf("! %d\n",x);fflush(stdout);
exit(0);
}
signed main(){
for(int i=0;i<=10;i++){
p[i]=query(i);
if(p[i]==0) write(i);
}
for(int i=0;i<=10;i++){
int v=1;
for(int j=0;j<=10;j++){
if(i==j) continue;
v=((i-j+mod)%mod*1ll*v)%mod;
}
p[i]=(p[i]*1ll*qpow(v,mod-2))%mod;
}
for(int i=11;i<mod;i++){
int v=0;
for(int j=0;j<=10;j++){
int val=1;
for(int k=0;k<=10;k++){
if(j==k) continue;
val=((i-k+mod)%mod*1ll*val)%mod;
}val=(val*1ll*p[j])%mod;
v=(v+val)%mod;
}
if(!v) write(i);
}write(-1);
return 0;
}
原文地址:https://www.cnblogs.com/NLDQY/p/11834135.html
- Pycharm常用技巧
- hdu 1598 find the most comfortable road(枚举+卡鲁斯卡尔最小生成树)
- 查询IP地址归属详情
- oracle commit详解
- hdu 4315 Climbing the Hill(阶梯博弈转nim博弈)
- iftop实时网络流量监控工具的安装使用
- hdu 3908 Triple(组合计数、容斥原理)
- hdu 4034 Graph (floyd的深入理解)
- hdu 4033Regular Polygon(二分+余弦定理)
- Debian8配置SSH允许root登陆
- hdu 4405Aeroplane chess(概率DP)
- hdu 3853LOOPS (概率DP)
- cf(#div1 B. Dreamoon and Sets)(数论)
- hdu 1805Expressions(二叉树构造的后缀表达式)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Ceph RGW】找一个用Go写的s3cmd
- 技术分享 | 如何优雅地在 Windows 上从 MySQL 5.6 升级到 5.7
- SpringCloud分布式配置中心
- Sharding-Proxy的基本功能使用
- React-Redux 对Todolist修改
- 快排解决寻找数组中的第K个最大元素
- Docker六脉神剑(一) Mac极速体验
- React-Router 5.0 制作导航栏+页面参数传递
- Vue3.0快速入门(速查)
- 憧憬博客Nginx到Tengine的迁移
- SpringCloud微服务构建浅析
- 宋宝华:Linux设备与驱动的手动解绑与手动绑定
- ELK7.x日志系统搭建 1. elk基础搭建
- 腾讯云直播开发日记 (二)附近直播-直播礼物-直播回放
- 腾讯云直播开发日记(三) 聊天室-直播转码-连麦混流