#include <bits/stdc++.h>
const int N = , MO = ;
int a[N][N], n = ;
inline int qpow(int a, int b) {
int ans = ;
while(b) {
if(b & ) {
ans = 1ll * ans * a % MO;
}
a = 1ll * a * a % MO;
b = b >> ;
}
return ans;
}
inline void Gauss() {
for(int i = ; i < n; i++) {
for(int j = i + ; j <= n; j++) {
if(a[j][i]) {
std::swap(a[j], a[i]);
break;
}
}
if(!a[i][i]) continue;
int inv = qpow(a[i][i], MO - );
for(int j = i + ; j <= n; j++) {
if(!a[j][i]) continue;
int p = 1ll * a[j][i] * inv % MO;
for(int k = i; k <= n + ; k++) {
a[j][k] -= 1ll * a[i][k] * p % MO;
a[j][k] = (a[j][k] % MO + MO) % MO;
}
}
}
for(int i = n; i > ; i--) {
a[i][n + ] = 1ll * a[i][n + ] * qpow(a[i][i], MO - ) % MO;
a[i][i] = ;
for(int j = i - ; j >= ; j--) {
if(!a[j][i]) continue;
int p = a[j][i];
a[j][i] -= p;
a[j][n + ] -= 1ll * a[i][n + ] * p % MO;
a[j][n + ] = (a[j][n + ] % MO + MO) % MO;
a[j][i] = (a[j][i] % MO + MO) % MO;
}
}
return;
} inline int cal(int x) {
int ans = , temp = ;
for(int i = ; i <= n; i++) {
(ans += 1ll * temp * a[i][n + ] % MO) %= MO;
temp = 1ll * temp * x % MO;
}
return ans;
}
int main() {
for(int i = ; i <= n; i++) {
fflush(stdout);
printf("? %d \n", i);
fflush(stdout);
scanf("%d", &a[i][n + ]);
fflush(stdout);
a[i][] = ;
for(int j = ; j <= n; j++) {
a[i][j] = 1ll * a[i][j - ] * i % MO;
}
} Gauss(); int ans = -;
for(int i = ; i < MO; i++) {
if(!cal(i)) {
ans = i;
break;
}
}
printf("! %d \n", ans);
return ;
}

高斯消元求主元——模意义下的消元cf1155E的更多相关文章

  1. hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五场 1004) 【组合数学 + 数论 + 模意义下的FFT】

    题目链接 首先利用组合数学知识,枚举两人的总胜场数容易得到 这还不是卷积的形式,直接搞的话复杂度大概是O(n^2)的,肯定会TLE.但似乎和卷积有点像?想半天没想出来..多谢Q巨提醒,才知道可以用下面 ...

  2. 模意义下的FFT算法

    //写在前面 单就FFT算法来说的话,下面只给出个人认为比较重要的推导,详细的介绍可参考 FFT算法学习笔记 令v[n]是长度为2N的实序列,V[k]表示该实序列的2N点DFT.定义两个长度为N的实序 ...

  3. Newcoder Wannafly13 B Jxy军训(费马小定理、分数在模意义下的值)

    链接:https://www.nowcoder.com/acm/contest/80/B 题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不 ...

  4. 【BZOJ2137】submultiple 高斯消元求伯努利数

    [BZOJ2137]submultiple Description 设函数g(N)表示N的约数个数.现在给出一个数M,求出所有M的约数x的g(x)的K次方和. Input 第一行输入N,K.N表示M由 ...

  5. HDU - 5755:Gambler Bo (开关问题,%3意义下的高斯消元)

    pro:给定N*M的矩阵,每次操作一个位置,它会增加2,周围4个位置会增加1.给定初始状态,求一种方案,使得最后的数都为0:(%3意义下. sol:(N*M)^3的复杂度的居然过了.          ...

  6. HDU4870_Rating_双号从零单排_高斯消元求期望

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4870 原题: Rating Time Limit: 10000/5000 MS (Java/Other ...

  7. 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基

    题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...

  8. HDU 5833 (2016大学生网络预选赛) Zhu and 772002(高斯消元求齐次方程的秩)

    网络预选赛的题目……比赛的时候没有做上,确实是没啥思路,只知道肯定是整数分解,然后乘起来素数的幂肯定是偶数,然后就不知道该怎么办了… 最后题目要求输出方案数,首先根据题目应该能写出如下齐次方程(从别人 ...

  9. SPOJ HIGH(生成树计数,高斯消元求行列式)

    HIGH - Highways no tags  In some countries building highways takes a lot of time... Maybe that's bec ...

随机推荐

  1. HttpServletRequest 各种方法总结(转)

    HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息. 转自: ...

  2. 最小树形图--朱刘算法([JSOI2008]小店购物)

    题面 luogu Sol 首先设一个 \(0\) 号点,向所有点连边,表示初始价值 显然这个图的一个 \(0\) 为根的最小有向生成树的边权和就是每个买一次的最小价值 再买就一定能优惠(包含 \(0\ ...

  3. 理解webpack4.splitChunks之chunks

    上回说到按照默认的splitChunks配置,入口里面的第三方依赖没有打包出来,这个是因为chunks属性的原因,下面我们就介绍chunks属性的意义和用法. chunks的含义是拆分模块的范围,它有 ...

  4. css3怎么分清伪类和伪元素

    伪类用于向某些选择器添加特殊的效果. 伪元素用于将特殊的效果添加到某些选择器. 伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lan ...

  5. <Android 基础(二十二)> EditText 无法显示完全以及尝鲜Android N

    前言 最近将Android Studio更新到了2.2 ,模拟器的Android版本也来到了最新的Nougat.很令人兴奋的一件事情呢! 对, 我就是这么没出息.文章结尾来几张图. 问题 最近遇到一个 ...

  6. Benefits of encapsulation

    ①:通过方法来控制成员变量的操作,提高了代码的安全性. ②:把代码用方法进行封装,提高了代码的复用性.

  7. Bootstrap 在线引用

    Bootstrap 3.3.0 js 文件 <script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.j ...

  8. 个人小项目——Java实现WC功能

    这个小项目用了两种方法解决了该功能的实现. 1.两种方法的功能和具体实现 代码可以成功运行,但是有一些情况考虑不完整,一种方法用了FileOutputStream输出流,为了解决空格无法统计问题,对文 ...

  9. bootstrap-table 分页增删改查之一(增加 删除)

    先上效果图 引入js文件 <!--js jquery --> <script type="text/javascript" src="${pageCon ...

  10. 【Leetcode】【Easy】Compare Version Numbers

    Compare two version numbers version1 and version2.If version1 > version2 return 1, if version1 &l ...