poj2947(高斯消元法解同余方程组)
题目链接:https://vjudge.net/problem/POJ-2065
题意:题目看着较复杂,实际上就是给了n个同余方程,解n个未知数。
思路:套高斯消元法的模板即可。
AC代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std; const int maxn=;
int T,equ,var,MOD,a[maxn][maxn],x[maxn];
char s[]; int gcd(int a,int b){
return b?gcd(b,a%b):a;
} int lcm(int a,int b){
return a/gcd(a,b)*b;
} void init(){
memset(x,,sizeof(x));
for(int i=;i<equ;++i){
int k=i+,t=;
for(int j=;j<var;++j){
a[i][j]=t;
t=t*k%MOD;
}
}
} int Gauss(){
int k=,LCM,ta,tb,tmp;
for(int col=;k<equ&&col<var;++k,++col){
int max_r=k;
for(int i=k+;i<equ;++i){
if(abs(a[i][col])>abs(a[max_r][col]))
max_r=i;
}
if(max_r!=k){
for(int i=col;i<var+;++i)
swap(a[max_r][i],a[k][i]);
}
if(!a[k][col]){
--k;
continue;
}
for(int i=k+;i<equ;++i){
if(!a[i][col]) continue;
LCM=lcm(a[i][col],a[k][col]);
ta=LCM/a[i][col];
tb=LCM/a[k][col];
if(a[i][col]*a[k][col]<) tb=-tb;
for(int j=col;j<var+;++j){
a[i][j]=((a[i][j]*ta-a[k][j]*tb)%MOD+MOD)%MOD;
}
}
}
for(int i=k;i<equ;++i){
if(a[i][var])
return -;
}
if(k<var){
return var-k;
}
for(int i=equ-;i>=;--i){
tmp=a[i][var];
for(int j=i+;j<var;++j){
if(!a[i][j]) continue;
tmp-=a[i][j]*x[j];
tmp=(tmp%MOD+MOD)%MOD;
}
while(tmp%a[i][i]!=) tmp+=MOD;
x[i]=(tmp/a[i][i])%MOD;
}
return ;
} int main(){
scanf("%d",&T);
while(T--){
scanf("%d%s",&MOD,s);
equ=var=strlen(s);
init();
for(int i=;i<equ;++i){
int t;
if(s[i]=='*') t=;
else t=s[i]-'a'+;
a[i][var]=t;
}
Gauss();
for(int i=;i<var;++i){
printf("%d",x[i]);
if(i!=var-) printf(" ");
}
printf("\n");
}
return ;
}
poj2947(高斯消元法解同余方程组)的更多相关文章
- (模板)poj2947(高斯消元法解同余方程组)
题目链接:https://vjudge.net/problem/POJ-2947 题意:转换题意后就是已知m个同余方程,求n个变量. 思路: 值得学习的是这个模板里消元用到lcm的那一块.注意题目输出 ...
- hdu 5755 Gambler Bo (高斯消元法解同余方程组)
http://acm.hdu.edu.cn/showproblem.php?pid=5755 题意: n*m矩阵,每个格有数字0/1/2 每选择一个格子,这个格子+2,4方向相邻格子+1 如何选择格子 ...
- C++实现,拓展中国剩余定理——解同余方程组(理论证明和代码实现)
拓展中国剩余定理 前言 记得半年前还写过关于拓展中国剩余定理的博客...不过那时对其理解还不是比较深刻,写的也比较乱. 于是趁学校复习之机,再来重温一下拓展中国剩余定理(以下简称ExCRT) 记得半年 ...
- poj 2947 Widget Factory (高斯消元解同余方程组+判断无解、多解)
http://poj.org/problem?id=2947 血泪史: CE:poj的string类型要加string库,swap不能直接交换数组 WA: x[m-1]也有可能<3啊O(≧口≦) ...
- HDU1573:X问题(解一元线性同余方程组)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1573 题目解析;HDU就是坑,就是因为n,m定义成了__int64就WAY,改成int就A了,无语. 这题 ...
- HDU3579:Hello Kiki(解一元线性同余方程组)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lc ...
- POJ 2947-Widget Factory(高斯消元解同余方程式)
题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...
- HDU1573 X问题【一元线性同余方程组】
题目链接: http://acm.hdu.edu.cn/showproblem.php? pid=1573 题目大意: 求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X ...
- AcWing 204. 表达整数的奇怪方式 (线性同余方程组)打卡
给定2n个整数a1,a2,…,ana1,a2,…,an和m1,m2,…,mnm1,m2,…,mn,求一个最小的整数x,满足∀i∈[1,n],x≡mi(mod ai)∀i∈[1,n],x≡mi(mod ...
随机推荐
- git error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
原因:git 版本过低 解决方法:卸载旧版本,重装新版本
- ** WARNING ** : Your ApplicationContext is unlikely to start due to a @ComponentScan of the default package.
https://blog.csdn.net/qq_15071263/article/details/78459087 1. 警告解读 ** WARNING ** : Your ApplicationC ...
- 使用C++定义一个万能类型
分享一个类似于Qt中QVariant类. 目录: 1 类型定义 2 数值操作 3 万能类型包装 4 使用 ——————————————————Begain—————————————————— 类型定义 ...
- vue draggable 火狐拖拽搜索问题
最近在使用vuedraggable做导航时候,谷歌拖拽是没问题的,但是在火狐测试时候,拖拽时候是可以成功,但是火狐还是打开了一个新的tab,并且搜索了,一开始想着是阻止默认行为,但是在@end时间中阻 ...
- white-space 标签 使用
white-space MSD定义为: 是用来设置如何处理元素中的空白 其使用场景有很多,比如:横向滑动,超出显示省略号,输出空格显示空格等 1.横向滑动 在写手机页面的过程中,我想大部分人都遇到横向 ...
- RAFT选举算法-分布式数据库困惑
在做HIS研发工作的时候一直想完善其数据组件,想做一个分布式的数据库支持系统.但一直以来都不清楚这个选举算法应怎么做,原来有一个叫raft的算法https://www.cnblogs.com/just ...
- 启动maven项目时报错Failed to start component [StandardEngine[Tomcat]]: A child container failed during start
详细错误信息:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run (default-cli) on ...
- Java-ZipUtil
Zip 压缩工具类,不支持压缩空文件夹. 简单版 import java.io.FileOutputStream; import java.io.IOException; import java.ni ...
- redhat 7.6下如何更新YUM源(仓库)?
1. 安装epel-release yum install epel-release 2. 安装webstatic-release rpm -Uvh https://mirror.we ...
- vue 高德地图
index.html <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119. ...