题目链接: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(高斯消元)的更多相关文章

  1. poj 2065 SETI 高斯消元

    看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...

  2. POJ 2065 SETI [高斯消元同余]

    题意自己看,反正是裸题... 普通高斯消元全换成模意义下行了 模模模! #include <iostream> #include <cstdio> #include <c ...

  3. 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 ...

  4. POJ 2065 SETI 高斯消元解线性同余方程

    题意: 给出mod的大小,以及一个不大于70长度的字符串.每个字符代表一个数字,且为矩阵的增广列.系数矩阵如下 1^0 * a0 + 1^1 * a1 + ... + 1^(n-1) * an-1 = ...

  5. POJ 2065 SETI (高斯消元 取模)

    题目链接 题意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'*'对应0,‘a’对应1,‘b’对应2.... 例如str[] = "abc&quo ...

  6. B - SETI POJ - 2065 (高斯消元)

    题目链接:https://vjudge.net/contest/276374#problem/B 题目大意: 输入一个素数p和一个字符串s(只包含小写字母和‘*’),字符串中每个字符对应一个数字,'* ...

  7. POJ SETI 高斯消元 + 费马小定理

    http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...

  8. POJ 2947-Widget Factory(高斯消元解同余方程式)

    题目地址:id=2947">POJ 2947 题意:N种物品.M条记录,接写来M行,每行有K.Start,End,表述从星期Start到星期End,做了K件物品.接下来的K个数为物品的 ...

  9. POJ2065 SETI 高斯消元

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2065 题意概括 多组数据,首先输入一个T表示数据组数,然后,每次输入一个质数,表示模数,然后,给出一 ...

  10. UVA 1563 - SETI (高斯消元+逆元)

    UVA 1563 - SETI option=com_onlinejudge&Itemid=8&page=show_problem&category=520&probl ...

随机推荐

  1. poll实现

    struct pollfd {    int fd;     //当前描述符    short events;     //进程关心的该描述符的事件    short revents;    //返回 ...

  2. Ubuntu 下为 Idea 创建启动图标.

    默认情况下,ubuntu将自动安装的软件快捷方式保存在/usr/share/applications目录下,如果我们要创建桌面快捷方式,需要在该目录下创建一个名为“Idea.desktop”的文件.通 ...

  3. ios的UIImage的两种不同的图片加载方式 tom猫

    在ios的UI交互设计时,对图片的处理是难免的:不同的处理方式会对内存有不同的影响: ********************************************************* ...

  4. 第一个Nodejs程序

    我的第一个Nodejs程序:Hello World var http = require("http"); http.createServer(function(request, ...

  5. foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on

    foxmail创建163公司企业邮箱的时候会出现ERR Unable to log on 解决办法:把pop.qiye.163.com更改为pop.ym.163.com,瞬间创建成功....也许是网易 ...

  6. PHP防止SQL注入与几种正则表达式讲解

    注入漏洞代码和分析 代码如下: <?php function customerror($errno, $errstr, $errfile, $errline) {     echo <b& ...

  7. Tutorial Unity 4 apk splitting into OBB for google play

    http://docs.unity3d.com/Manual/android-OBBsupport.html http://www.exoa.fr/tutorial-unity-4-apk-split ...

  8. jstl if条件判断字符串代码

    <c:if test="${netWorkInfo.networkType eq '快修店'}"> <input type="radio" n ...

  9. DC-DC升压(BOOST)电路原理

    BOOST升压电路中:      电感的作用:是将电能和磁场能相互转换的能量转换器件,当MOS开关管闭合后,电感将电能转换为磁场能储存起来,当MOS断开后电感将储存的磁场能转换为电场能,且这个能量在和 ...

  10. #define x do{......} while(0)的用处

    比如定义宏,#define FREE1(p) if (p) free (p)然后这样调用:if (expression)FREE1(p);elseprintf(“expression was fals ...