POJ 2065 SETI(高斯消元)
题目链接:http://poj.org/problem?id=2065
题意:给出一个字符串S[1,n],字母a-z代表1到26,*代表0。我们用数组C[i]表示S[i]经过该变换得到的数字。给出一个素数p。有n个未知数X[1,n]。解方程:

思路:消元时让上一个方程乘以一个数下一个方程乘以一个数使得对应位置的数字相等,直接减去即可。最后的a[i][i]*X[i]%p=a[i][n+1]直接枚举X[i]。
char s[N];
int a[N][N],n,p,ans[N];
void Gauss()
{
int i,j,k,t;
for(i=1,j=1;i<=n&&j<=n;i++,j++)
{
for(k=j;k<=n;k++) if(a[k][i]) break;
for(t=1;t<=n+1;t++) swap(a[k][i],a[j][i]);
for(k=1;k<=n;k++) if(k!=j&&a[k][i])
{
int x=a[j][i],y=a[k][i];
for(t=1;t<=n+1;t++)
{
a[j][t]=a[j][t]*y%p;
a[k][t]=a[k][t]*x%p;
a[k][t]-=a[j][t];
a[k][t]%=p;
if(a[k][t]<0) a[k][t]+=p;
}
}
}
for(i=1;i<=n;i++)
{
for(j=0;j<p;j++) if(a[i][i]*j%p==a[i][n+1]) break;
ans[i]=j;
}
}
int main()
{
rush()
{
RD(p); RD(s+1); n=strlen(s+1);
int i,j;
FOR1(i,n)
{
int k=1;
FOR1(j,n) a[i][j]=k,k=k*i%p;
a[i][n+1]=s[i]=='*'?0:s[i]-'a'+1;
}
Gauss();
for(i=1;i<n;i++) printf("%d ",ans[i]);
PR(ans[i]);
}
}
POJ 2065 SETI(高斯消元)的更多相关文章
- poj 2065 SETI 高斯消元
看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...
- 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 ...
随机推荐
- nginx学习之一
http://tengine.taobao.org/book/chapter_02.html
- matlab实现共轭梯度法、多元牛顿法、broyden方法
共轭梯度法: function [ x, r, k ] = CorGrant( x0, A, b ) x = x0; r = b - A * x0; d = r; X = ones(length(x) ...
- int main(int argc,char* argv[]) 简单理解
(1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...
- Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程
生命在于折腾. 这个帖子作为我安装xilinx ISE 14.7版本一个记录.希望给需要的人一些帮助,这些内容绝大部分也是来源于互联网. 软硬件: lsb_release -a No LSB modu ...
- C# - (0x80040154): Retrieving the COM class factory for component with CLSID {877AA945-1CB2-411C-ACD7-C70B1F9E2E32} failed
1. Exeption Error: System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM clas ...
- 2186: [Sdoi2008]沙拉公主的困惑 - BZOJ
Description 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现 ...
- org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver class not found
今天在使用hibernate搭建开发环境的时候出现了一个不可思议的问题: org.hibernate.service.classloading.spi.ClassLoadingException: S ...
- 【BZOJ】【2208】【JSOI2010】连通数
题解: 1.Tarjan缩点以后对每个连通分量进行深搜,看能到哪些连通分量,能到达的所有连通分量的size之和记为sum.则第i个连通分量对答案的贡献为size[i]*sum(到其他连通分量)+siz ...
- 获取c++ edit控件内容
CString str1,str2; ((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(str1); ((CEdit*)GetDlgItem(IDC_ ...
- leetcode Largest Rectangle in Histogram 解法二
上一篇文章讲了该题的一个解法.后来又发现一个更好的解法. 首先依旧考虑一个升序的数列,例如1,2,3,4,5.那么它的最大矩形显然是有5种可能,即 1*5,2*4,3*3,4*2,1*5.所以最大的矩 ...