https://codeforces.com/contest/1155/problem/E

题意

\(f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq a_i < 10^6+3\),每次可以询问一个x,返回\(f(x)mod(10^6+3)\),50次询问以内需要找到x使得 \(f(x) \equiv 0 mod(10^6+3)\)

题解

  • 现未知\(a_0,a_1,...,a_k\),一共k+1个未知数,需要k+1个方程来解,因此只需要询问k+1次即可
  • 将x看成系数,\(a_0,a_1,...,a_k\)当成未知数,带模高斯消元即可

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll P=1e6+3;
ll a[15][15],b[15]; int ask(int i){
printf("? %d\n",i);
fflush(stdout);
int x;scanf("%d",&x);
return x;
}
ll inv(ll bs){
ll ans=1,x=P-2;
while(x){
if(x&1)ans=ans*bs%P;
bs=bs*bs%P;
x>>=1;
}
return ans;
}
void gao(){
for(int i=0;i<=10;i++){
for(int j=i+1;j<=10;j++){
ll rate=a[j][i]*inv(a[i][i])%P;
for(int k=i;k<=11;k++){
a[j][k]-=a[i][k]*rate%P;
a[j][k]+=P;a[j][k]%=P;
}
}
}
for(int i=10;i>=0;i--){
for(int j=i-1;j>=0;j--){
ll rate=a[j][i]*inv(a[i][i])%P;
a[j][11]-=a[i][11]*rate%P;
a[j][11]+=P;a[j][11]%=P;
}
a[i][i]=a[i][11]*inv(a[i][i])%P;
}
} int chk(ll x){
b[0]=1;
for(int i=1;i<=10;i++)b[i]=b[i-1]*x%P;
ll sum=0;
for(int i=0;i<=10;i++){
sum+=b[i]*a[i][i]%P;
sum%=P;
}
return sum==0;
}
int main(){
for(int i=0;i<=10;i++){
a[i][11]=ask(i);
ll p=1;
for(int j=0;j<=10;j++){
a[i][j]=p;
p=p*i%P;
}
}
gao();
for(int i=0;i<P;i++){
if(chk(i)){
printf("! %d\n",i);
fflush(stdout);
return 0;
}
}
printf("! -1\n");fflush(stdout);
}

Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元的更多相关文章

  1. Educational Codeforces Round 63 (Rated for Div. 2) 题解

    Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...

  2. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)

    题目:https://codeforces.com/contest/1155/problem/D 题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和 思路: ...

  3. Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)

    https://codeforces.com/contest/1155/problem/D 题意 一个n个数的数组\(a[i]\),可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心, ...

  4. Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维

    题意:博弈题面  给出一个数字序列 (>=11)  有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手  数字序列一定是奇 ...

  5. Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd

    题意:给出一个递增的时间序列a  给出另外一个序列b  (都是整数) 以b中任选一个数字作为间隔  自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路  直接求间隔的公共gc ...

  6. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp

    题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x  问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...

  7. Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)

    传送门 题意: 给你一个包含 n 个元素的序列 a[]: 定义序列 a[] 的 beauty 为序列 a[] 的连续区间的加和最大值,如果全为负数,则 beauty = 0: 例如: a[] = {1 ...

  8. Educational Codeforces Round 63 (Rated for Div. 2)

    传送门 A. Reverse a Substring 题意: 给你一串 s,让你判断能否通过反转区间[l,r]的元素,使得反转后的串的字典序小于 s: 如果能,输出 "YES",并 ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship

    Problem   Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...

随机推荐

  1. mysql执行操作时卡死

    有时候使用Navicat对mysql数据库进行添加字段,truncate或其他操作时会一直卡住不动,后来查看进程才发现一直处于等待状态 先执行,列出所有进程 show full processlist ...

  2. dell服务器已有阵列新增的磁盘无法识别显示外来

    问题描述: 今天遇到个插入新硬盘显示外来盘,然后不可用,然后电话问了一下戴尔的工程师 说需要清除一下原来磁盘的阵列信息之类的,才能识别到,这里就做一个笔记记录一下,顺便分享给有需要的朋友! 解决方法: ...

  3. IT兄弟连 Java语法教程 数组 深入数组 内存中的数组

    数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的.下面将深入介绍数组在内存中的运行机制. 内存中的数组 数组引用变量只是一个引用,这个引用变量可以指向任何有效的 ...

  4. Laravel配置全局公共函数

    在Laravel项目中我们常常需要定义一些全局的公共函数,通常我们会将这些公共函数定义在一个单独的文件里,如helpers.php中.我们在app目录下创建一个名为helpers.php的文件(app ...

  5. C#中 ??、 ?、 ?: 、?.、?[ ] 问号各组合含义

    1. 可空类型修饰符(?) 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...

  6. go开发注意事项和dos的一些操作

    不需要加分号 写法 go编译器一行一行编译,所以多条语句不能写在同一行,否则会报错 go语言定义的变量或者import的包如果没有使用到,代码不能通过编译 func main() { ... } 只能 ...

  7. python基础(25):面向对象三大特性二(多态、封装)

    1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...

  8. 用Python查找数组中出现奇数次的那个数字

    有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数. 集合+统计 解题思路 最简单能想到的,效率不高.利用集合的特性,通过 Python 的 s ...

  9. 合格的施工图是如何绘制的?必须要get这四点,大多数人都不知道

    对于工程设计师来说加班通宵赶图改图是常有的事情,如何绘制一套合格的施工图?这是很多工程设计师都会问的问题. 绘制一套合格的施工图,你需要注意以下四点: 一.明确施工图的作用和目的 1. 工程设计的细化 ...

  10. CSS边框使用-基础

    前端开发工作中经常会碰到奇形怪状的图形,当然也少不了UI设计童鞋的脑洞和创意啦,初级的开发人员可能会选择使用图片做背景加上位置属性实现,不过很多时候,CSS能实现的就不要再动用PS等工具了,时间宝贵, ...