poj 2065 SETI 高斯消元
看题就知道要使用高斯消元求解!
代码如下:
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
using namespace std;
int an[][],p,ans[];
char str[];
int pows(int a,int b)
{
int ans=;
while(b){
if(b&) ans=(ans*a)%p;
b>>=;
a=(a*a)%p;
}
return ans%p;
}
int gcd(int a,int b)
{
if(a<b) swap(a,b);
while(b){
int t=a;
a=b;
b=t%b;
}
return a;
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b;
}
void show(int n)
{
for(int i=;i<n;i++){
for(int j=;j<=n;j++)
cout<<an[i][j]<<' ';
cout<<endl;
}
cout<<endl;
}
void Gauss(int n)
{
int i,j,k,ma,mb,LCM;
for(i=;i<n;i++){
int row=i;
for(j=i+;j<n;j++)
if(an[j][i]>an[row][i]) row=j;
if(row!=i){
for(j=;j<=n;j++)
swap(an[i][j],an[row][j]);
}
for(j=i+;j<n;j++){
if(an[j][i]){
LCM=lcm(an[i][i],an[j][i]);
ma=LCM/an[i][i];
mb=LCM/an[j][i];
for(k=i;k<=n;k++){
an[j][k]=mb*an[j][k]-ma*an[i][k];
an[j][k]=(an[j][k]%p+p)%p;
}
}
}
}
for(i=n-;i>=;i--){
for(j=i+;j<n;j++){
an[i][n]-=ans[j]*an[i][j];
an[i][n]=an[i][n]%p;
}
while(an[i][n]%an[i][i]) an[i][n]+=p;
ans[i]=an[i][n]/an[i][i];
ans[i]=(ans[i]%p+p)%p;
}
}
int main()
{
int t,len,i,j,k;
cin>>t;
while(t--){
cin>>p>>str;
len=strlen(str);
for(i=;i<len;i++){
for(j=;j<len;j++){
an[i][j]=pows(i+,j);
}
if(str[i]=='*')
an[i][len]=;
else an[i][len]=str[i]-'a'+;
}
Gauss(len);
for(i=;i<len-;i++)
cout<<ans[i]<<' ';
cout<<ans[i]<<endl;
}
}
poj 2065 SETI 高斯消元的更多相关文章
- POJ 2065 SETI [高斯消元同余]
题意自己看,反正是裸题... 普通高斯消元全换成模意义下行了 模模模! #include <iostream> #include <cstdio> #include <c ...
- POJ.2065.SETI(高斯消元 模线性方程组)
题目链接 \(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}\equ ...
- POJ 2065 SETI 高斯消元解线性同余方程
题意: 给出mod的大小,以及一个不大于70长度的字符串.每个字符代表一个数字,且为矩阵的增广列.系数矩阵如下 1^0 * a0 + 1^1 * a1 + ... + 1^(n-1) * an-1 = ...
- POJ 2065 SETI (高斯消元 取模)
题目链接 题意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2.... 例如str[] = "abc&quo ...
- B - SETI POJ - 2065 (高斯消元)
题目链接:https://vjudge.net/contest/276374#problem/B 题目大意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'* ...
- POJ SETI 高斯消元 + 费马小定理
http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...
- POJ 2947-Widget Factory(高斯消元解同余方程式)
题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...
- POJ2065 SETI 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2065 题意概括 多组数据,首先输入一个T表示数据组数,然后,每次输入一个质数,表示模数,然后,给出一 ...
- UVA 1563 - SETI (高斯消元+逆元)
UVA 1563 - SETI option=com_onlinejudge&Itemid=8&page=show_problem&category=520&probl ...
随机推荐
- js 比较两个日期的大小的例子
例子,直接比较大小即可 代码如下 复制代码 <script>var st="2009-10-20 14:38:40"var et="2009-10-20 15 ...
- (转)Flickr架构
Flickr(http://www.flickr.com/ ) 是国外一个领先的图片分享网站,现在应该在yahoo门下,感觉yahoo还是有很多好东西,奈何资本要抛弃他了.这个轮回其实挺有意思的,起先 ...
- 常用DOM笔记
1,获取元素方法: (1),获取单个,返回一个元素 element.getElementById()//最快,实时 element.querySelector() (2)获取多个,返回一组 eleme ...
- js笔记——浏览器及版本判断
判断IE浏览器的时候注意需要做两个判断 一个是msie 一个是Edge function myBrowser(){ var userAgent = navigator.userAgent; //取得浏 ...
- maven入门程序(3)
欢迎转载交流:http://www.cnblogs.com/shizhongtao/p/3472864.html 这里我将展示如何用maven快速创建一个基于spring的web框架.创建步骤和上一篇 ...
- OpenCV基本架构[OpenCV 笔记0]
最近正在系统学习OpenCV,将不定期发布笔记,主要按照毛星云的<OpenCV3编程入门>的顺序学习,会参考官方教程和文档.学习工具是Xcode+CMake,会对书中一部分内容更正,并加入 ...
- CentOS 7学习笔记(二)之Nginx安装
说明: 1.这篇学习记录的目的是如何在CentOS 7上面安装Nginx,包括两种安装方式,yum源安装和源代码编译安装: 2.CentOS 7初学者,某些观点带有猜测之意,文中不足之处,还请批评指正 ...
- Spring MVC - log4j 配置
http://blog.csdn.net/yhqbsand/article/details/8764388
- Android 生命周期 和 onWindowFocusChanged
转载 http://blog.csdn.net/pi9nc/article/details/9237031 onWindowFocusChanged重要作用 Activity生命周期中,onStart ...
- js字符串长度计算(一个汉字==两个字符)和字符串截取
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...