博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ.2065.SETI(高斯消元 模线性方程组)
阅读量:4624 次
发布时间:2019-06-09

本文共 1094 字,大约阅读时间需要 3 分钟。

\(Description\)

\(A_0,A_1,A_2,\cdots,A_{n-1}\),满足

\[A_0*1^0+A_1*1^1+\ldots+A_{n-1}*1^{n-1}\equiv B[1](mod\ p)\]
\[A_0*2^0+A_1*2^1+\ldots+A_{n-1}*2^{n-1}\equiv B[2](mod\ p)\]
\[\ldots\ldots\ldots\]
\[A_0*n^0+A_1*n^1+\ldots+A_{n-1}*n^{n-1}\equiv B[n](mod\ p)\]
其中\(B[i]\)\(str[i-1]\)表示的数字。

\(Solution\)

  模意义下的高斯消元,在初等行变换时把\(t=tar(A[i][j])/Anow(A[j][j])\)改为\(t=tag*inv(Anow)\)。(也可以在tar不整除Anow时把tar变为它们的lcm,即整行乘\(lcm(tar,Anow)/tar\))

  最后求解回带时把除法用乘逆元替代即可。(也可用扩展欧几里得求出一个最小的ans[i])

#include 
#include
#include
#define mod ptypedef long long LL;const int N=100;namespace Gauss{ int p,n,A[N][N],ans[N]; char s[N]; int FP(LL x,int k) { LL t=1; for(;k;k>>=1, x=x*x%p) if(k&1) t=t*x%p; return t; } inline int inv(int x) {return FP(x,p-2);} void Init() { scanf("%d%s",&p,s); n=strlen(s); for(int i=0; i
A[mxrow][j]) mxrow=i; if(mxrow!=j) std::swap(A[mxrow],A[j]); for(int i=j+1; i

转载于:https://www.cnblogs.com/SovietPower/p/8446229.html

你可能感兴趣的文章
mongod.service: control process exited, code=exited status=1
查看>>
c# 发送邮件、附件 分类: C# 2014-12-...
查看>>
对360来说,江湖上再无“搜狗”这个传说
查看>>
composer
查看>>
OpenCV特征点检测——ORB特征
查看>>
mysql的csv数据导入与导出
查看>>
leetcode笔记:Pascal's Triangle
查看>>
ASP.NET性能优化之构建自定义文件缓存
查看>>
Shell——windows上写完放入linux的时候需要注意的问题
查看>>
65条常用的正则表达式
查看>>
Vscode断点调试PHP
查看>>
做前端要做的6大事
查看>>
LeetCode 813. Largest Sum of Averages
查看>>
vSphere、Hyper-V与XenServer 你选哪个?
查看>>
java.lang.UnsupportedClassVersionError
查看>>
实现接口必须要加注解@Override吗
查看>>
apicloud UISearchBar 使用方法
查看>>
【spring+websocket的使用】
查看>>
mongo二维数组操作
查看>>
localStorage之本地储存
查看>>