POJ 2065 高斯消元+线性模方程
来源:互联网 发布:新论语 严介和 淘宝网 编辑:程序博客网 时间:2024/06/09 19:35
消元过程为保持整数用最小公倍数。
回代过程用线性模方程
计算过程注意保持模n下的非负数。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <map>#include <set>#include <algorithm>#include <ctime>#include <vector>#include <string>using namespace std;int p,n;char s[1000];int a[100][100];int ans[100];int gcd(int a,int b){ return b==0 ? a : gcd(b,a%b);}int lcm(int a,int b){ return a/gcd(a,b)*b;}int extend_gcd(int a,int b,int &x,int &y){ if(b==0) { x=1;y=0; return a; } int res=extend_gcd(b,a%b,y,x); y=y-a/b*x; return res;}void gauss(){ for(int i=0;i<n;++i) { int pivot=i; for(int k=i+1;k<n;++k) if(abs(a[k][i])>abs(a[pivot][i])) pivot=k; if(a[i][i]==0) continue; if(pivot!=i) { for(int j=0;j<=n;++j) swap(a[pivot][j],a[i][j]); } // elimination for(int k=i+1;k<n;++k) if(a[k][i]) { int mul=lcm(a[i][i],a[k][i]); int ma=mul/a[i][i]; int mb=mul/a[k][i]; for(int j=0;j<=n;++j) a[k][j]=((a[k][j]*mb%p-a[i][j]*ma%p)%p+p)%p; } } for(int i=n-1;i>=0;--i) { for(int k=i+1;k<n;++k) { a[i][n]-=a[i][k]*ans[k]%p; a[i][n]=(a[i][n]%p+p)%p; } int x,y; extend_gcd(a[i][i],p,x,y); ans[i]=(x*a[i][n]%p+p)%p; }}int main (){ int T;scanf("%d",&T); while(T--) { scanf("%d%s",&p,s); memset(a,0,sizeof(a)); n=strlen(s); for(int i=1;i<=n;++i) for(int t=1,j=0;j<n;++j,t*=i,t%=p) a[i-1][j]=t; for(int i=0;i<n;++i) if(s[i]=='*') a[i][n]=0; else a[i][n]=s[i]-'a'+1; gauss(); for(int i=0;i<n;++i) { printf("%d",ans[i]); if(i<n-1) printf(" "); else puts(""); } } return 0;}
- POJ 2065 高斯消元+线性模方程
- POJ 2115 线性模方程
- POJ 2947 Widget Factory 高斯消元 解线性同余方程
- 求解线性模方程
- 线性模方程求解
- poj 1061(线性同余方程。。。。)
- poj 2115(线性同余方程。。。。。)
- POJ 2115(线性同余方程)
- poj 1061 (解线性同余方程)
- poj 1061 (解线性同余方程)
- gcd欧几里得,线性模方程
- POJ 2891 Strange Way to Express Integers 【中国剩余定理线性模方程合并(模板)】
- POJ 2115 扩展欧几里德解线性同余方程
- 线性同余方程:poj 2115 C Looooops
- POJ 2115-C Looooops(基础一元线性同余方程)
- POJ 2115-C Looooops(基础一元线性同余方程)
- poj 2115 C Looooops(解线性同余方程)
- POJ 2115 C Looooops (线性同余方程)
- SqlServer和Oracle中一些常用的sql语句1
- 关于popupwindow 嵌套ListView onitemclick 事件不能响应
- delphi 取文件版本号
- 颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)
- Java线程同步 (synchronized wait notify)
- POJ 2065 高斯消元+线性模方程
- bcdedit error的问题
- Windows ce的体系结构和功能
- Unsupported major.minor version 51.0解决
- poj2230Watchcow(简单欧拉回路)
- DWZ 表单提交重定向问题
- 利用Windows命令行做U盘启动
- 【Linux】Linux内存介绍以及C与C++内存管理
- 编程之美解题笔记