青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

poj 2065 SETI

   題意比較糾結,搜索了把題意。
   給你一個素數P(P<=30000)和一串長為n的字符串str[]。字母'*'代表0,字母a-z分別代表1-26,這n個字符所代表的數字分別代表
f(1)、f(2)....f(n)。定義: f (k) = ∑0<=i<=n-1aiki (mod p) (1<=k<=n,0<=ai<P),求a0、a1.....an-1。題目保證肯定有唯一解。
   解題思路:高斯消元。根據上面的公式顯然可以列出有n個未知數的n個方程式:
   a0*1^0 + a1*1^1+a2*1^2+........+an-1*1^(n-1) = f(1)
   a0*2^0 + a1*2^1+a2*2^2+........+an-1*2^(n-1) = f(2)
   ..............
   a0*n^0 + a1*n^1+a2*n^2+........+an-1*n^(n-1) = f(n)
   然后采用高斯消元法來解上面的方程組即可。
   典型的高斯消元題,只是多了個modP,因此計算過程中可能需要擴展歐幾里德算法。

   說下所謂的高斯消元的思路,其實可以參看維基百科,
http://zh.wikipedia.org/wiki/%E9%AB%98%E6%96%AF%E6%B6%88%E5%8E%BB%E6%B3%95,大致過程是一直消變量。
比如剛開始,消第一個變量,消完之后只讓第一個方程含有第一個變量,然后消第二個變量,消完之后只讓第二個方程含第二個變量,以此
下去讓最后的方程含最后一個變量,而且最后一個方程中對于前N-1個變量的系數都是0,這樣就能解出這N個變量了。
   關于自由元指的是這個變量可以取任何值,得出這樣的結論是在消變量的過程中發現該變量的在第row個方程到第N方程中的系數都是0了,
所以可以取任何值。判斷無解的方式是,第row+1到第N個方程在高斯消元之后所有的系數必定是0,所以方程的值也必須是0。
   求方程的解得過程是從N個解開始逆推,第N-1個方程也就包含2個變量了,第N個變量和第N-1個變量,以此下去,就可以解出方程組了。
   具體的可以參照維基百科和代碼仔細分析。還有演算法筆記上也有高斯消元的解釋。

   代碼如下:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define MAX (70 + 10)

int nMatrix[MAX][MAX];
int nAns[MAX];
void InitMatrix(char* szStr, int nN, int nP)
{
    memset(nMatrix, 0, sizeof(nMatrix));
    for (int i = 0; i < nN; ++i)
    {
        nMatrix[i][nN] = (szStr[i] == '*' ? 0 : szStr[i] - 'a' + 1);
    }
    for (int i = 0; i < nN; ++i)
    {
        int nTemp = 1;
        for (int j = 0; j < nN; ++j)
        {
            nMatrix[i][j] = nTemp;
            nTemp = (nTemp * (i + 1)) % nP;
        }
    }
}

int egcd(int nA, int nB, int& nX, int& nY)
{
    if (nA < nB)swap(nA, nB);
    if (nB == 0)
    {
        nX = 1, nY = 0;
        return nA;
    }
    int nRet = egcd(nB, nA % nB, nX, nY);
    int nT = nX;
    nX = nY;
    nY = nT - (nA / nB) * nY;
    return nRet;
}

int Gauss(int nN, int nP)
{
    int nR, nC;
    for (nR = nC = 0; nR < nN && nC < nN; ++nR, ++nC)
    {
        if (nMatrix[nR][nC] == 0)
        {
            for (int i = nR + 1; i < nN; ++i)
            {
                if (nMatrix[i][nC])
                {
                    for (int j = nC; j <= nN; ++j)
                    {
                        swap(nMatrix[nR][j], nMatrix[i][j]);
                    }
                    break;
                }
            }
        }

        if (nMatrix[nR][nC] == 0)
        {
            nR--;    //自由元
            continue;
        }
        int nA = nMatrix[nR][nC];
        for (int i = nR + 1; i < nN; ++i)
        {
            if (nMatrix[i][nC])
            {
                int nB = nMatrix[i][nC];
                for (int j = nC; j <= nN; ++j)
                {
                    nMatrix[i][j] = (nMatrix[i][j] * nA - nMatrix[nR][j] * nB) % nP;
                }
            }
        }
    }
    for (int i = nR; i < nN; ++i)
    {
        if (nMatrix[i][nN])
        {
            return -1;//無解
        }
    }
    
    int nX, nY;
    for (int i = nN - 1; i >= 0; i--)
    {
        int nSum = 0;
        for (int j = i + 1; j < nN; ++j)
        {
            nSum = (nSum + nMatrix[i][j] * nAns[j]) % nP;
        }
        
        nSum = (nMatrix[i][nN] - nSum + nP * nP) % nP;
        
        egcd(nP, (nMatrix[i][i] + nP) % nP, nX, nY);
        nY = (nY + nP) % nP;
        nAns[i] = (nY * nSum + nP) % nP;//第i個解
    }
    return 1 << (nN - nR);//返回解的個數,本題有唯一解
}

int main()
{
    int nT;

    scanf("%d", &nT);
    while (nT--)
    {
        int nP;
        int nN;
        char szStr[MAX];
        scanf("%d%s", &nP, szStr);
        nN = strlen(szStr);
        InitMatrix(szStr, nN, nP);
        Gauss(nN, nP);
        for (int i = 0; i < nN; ++i)
        {
            printf("%d%s", nAns[i], i == nN - 1 ? "\n" : " ");
        }
    }

    return 0;
}
   

posted on 2012-08-06 16:01 yx 閱讀(915) 評論(0)  編輯 收藏 引用 所屬分類: 數學題

<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            最新日韩中文字幕| 伊大人香蕉综合8在线视| 99视频超级精品| 欧美激情麻豆| 亚洲精品视频在线看| 亚洲精品久久嫩草网站秘色| 亚洲国产视频直播| 一区二区91| 欧美一区中文字幕| 免费看亚洲片| 欧美日韩中文在线| 国产精品亚洲视频| 狠狠久久综合婷婷不卡| 亚洲人午夜精品免费| 亚洲免费婷婷| 蜜桃精品一区二区三区| 欧美激情一区二区三区蜜桃视频| 亚洲激情影视| 亚洲一区观看| 免费久久99精品国产自在现线| 欧美日韩视频在线一区二区观看视频 | 久久精品导航| 91久久久久久| 久久se精品一区精品二区| 欧美成年人视频| 国产精品热久久久久夜色精品三区| 狠狠色综合色区| 亚洲欧美中文另类| 亚洲国产欧美日韩另类综合| 亚洲欧美不卡| 欧美久久久久久久久久| 国产一区二区三区久久久久久久久| 亚洲精品免费在线播放| 久久久www成人免费毛片麻豆| 亚洲精品一区二区三区av| 久久久亚洲午夜电影| 国产欧美日韩一区二区三区在线| 亚洲国产日韩欧美在线图片| 久久精品人人做人人爽电影蜜月| 99在线热播精品免费| 另类成人小视频在线| 国产免费观看久久黄| av成人黄色| 欧美不卡高清| 久久se精品一区精品二区| 美女爽到呻吟久久久久| 99热精品在线观看| 麻豆乱码国产一区二区三区| 国产精品一区二区在线| 中文日韩在线视频| 亚洲欧洲一区二区三区久久| 久久www成人_看片免费不卡| 国产精品综合| 午夜精品免费在线| 中文有码久久| 欧美特黄一区| 在线视频一区观看| 亚洲精品一区二区在线观看| 欧美黑人在线观看| 亚洲清纯自拍| 亚洲日本一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 加勒比av一区二区| 欧美14一18处毛片| 免费在线观看日韩欧美| 亚洲日本乱码在线观看| 亚洲精品黄网在线观看| 欧美日韩系列| 欧美与欧洲交xxxx免费观看| 欧美专区日韩视频| 1769国内精品视频在线播放| 欧美大片免费| 欧美久久久久久久| 亚洲欧美在线高清| 久久精品卡一| 亚洲日本无吗高清不卡| av成人天堂| 国产一区白浆| 欧美不卡一卡二卡免费版| 欧美激情第三页| 欧美一级视频一区二区| 久久久久久9| aa级大片欧美| 亚洲欧美日韩天堂| 亚洲福利小视频| 亚洲视频网在线直播| 狠狠综合久久av一区二区小说 | 夜久久久久久| 国产一区二区精品在线观看| 蜜桃精品一区二区三区| 欧美精品一区二区三区在线看午夜 | 久久精品一区| 欧美第十八页| 欧美一区二区久久久| 久久综合色婷婷| 亚洲欧美日本伦理| 久色婷婷小香蕉久久| 亚洲中午字幕| 蜜桃av噜噜一区| 欧美一区二区女人| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲在线成人精品| 黄色精品一区二区| 亚洲免费精彩视频| 依依成人综合视频| 亚洲图片欧美一区| 亚洲精品网址在线观看| 亚洲免费在线电影| 亚洲毛片网站| 久久国产色av| 午夜老司机精品| 欧美韩国日本一区| 久久精品99国产精品日本| 欧美极品在线播放| 蜜桃久久av| 国语精品一区| 亚洲欧美综合另类中字| 一二三区精品福利视频| 玖玖玖国产精品| 玖玖精品视频| 国产一区二区久久| 亚洲欧美综合精品久久成人| 亚洲在线播放电影| 欧美日韩国产一级片| 欧美韩日一区| 亚洲国产91| 久久全国免费视频| 久久成人人人人精品欧| 欧美午夜精品久久久久免费视| 欧美国产日本在线| 国产在线观看91精品一区| 亚洲女性裸体视频| 午夜精品久久久久久99热软件 | 亚洲男人的天堂在线aⅴ视频| 亚洲免费观看| 欧美电影在线播放| 91久久久久| 亚洲毛片网站| 欧美精品一区二区高清在线观看| 欧美福利专区| 亚洲激情成人在线| 免费观看成人| 亚洲精品系列| 在线亚洲免费| 国产精品久久久久久久久免费樱桃| 亚洲精品综合精品自拍| 一区二区三区四区国产精品| 欧美国产1区2区| 日韩一级大片| 国产精品日韩欧美一区| 性xx色xx综合久久久xx| 久久久久久91香蕉国产| 一区二区三区在线视频免费观看| 久久久久99| 亚洲国产精品va在线看黑人动漫| 欧美精品日韩| 蘑菇福利视频一区播放| 亚洲激情在线| 欧美人与性禽动交情品| 国产精品99久久久久久人| 久久成人一区二区| 在线国产日韩| 欧美日韩精品一区二区三区| 一本到高清视频免费精品| 香蕉久久夜色精品国产使用方法| 国产色爱av资源综合区| 久久精品在线观看| 亚洲电影免费在线| 中文精品视频一区二区在线观看| 欧美深夜福利| 久久成人18免费网站| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲毛片av| 国产日韩欧美麻豆| 欧美精品偷拍| 久久黄色网页| 亚洲毛片在线观看| 久久久中精品2020中文| 一本久久青青| 激情丁香综合| 欧美午夜激情在线| 久久久久久午夜| 在线一区二区三区四区五区| 老司机aⅴ在线精品导航| 日韩一级在线| 精品成人一区二区| 国产精品家庭影院| 久久综合亚州| 99国内精品久久| 久久中文字幕一区| 一区二区三区偷拍| 亚洲高清不卡在线观看| 国产精品久久久久久久久久免费 | 亚洲欧美日韩电影| 亚洲理论在线观看| 麻豆乱码国产一区二区三区| 亚洲视频免费观看| ●精品国产综合乱码久久久久| 国产精品网站在线| 欧美性jizz18性欧美|