日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj2065 SETI

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj2065 SETI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先a…z=1..26,*=0?
讀入p(模數且為質數),s(下標從0開始),s長度為n?
求方程組?
https://blog.csdn.net/Clove_unique/article/details/54381675

?

#include <iostream> #include <cstdio> #include <cmath> #include <cstring> using namespace std; typedef long long ll; const int maxn=100; int mod,a[maxn][maxn],x[maxn]; bool free_x[maxn];//標記是否是不確定的變元 int var,equ; char str[maxn]; int p; void ex_gcd(int a, int b, int &d, int &x, int &y) { if (!b) { x = 1; y = 0; d = a; } else { ex_gcd(b, a%b, d, y, x); y -= x * (a / b); }; } 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;}//先除后乘防溢出 int inv_exgcd(int a, int m) { int d, x, y;ex_gcd(a, m, d, x, y);return d == 1 ? (x + m) % m : -1; } void init() {memset(a, 0, sizeof(a));var=equ=strlen(str);for(int i=0;i<equ;++i){int te=1;for(int j=0;j<var;++j){a[i][j]=te;//做的第一道題關于高斯消元的板子,博主能想到這種構造出k^i的數值也是很服氣te=te*(i+1)%p;}a[i][var]=(str[i]=='*')?0:int(str[i]-'a'+1);//常量 題目中說的f(k)} } int Gauss() {int i,j,k;int max_r;// 當前這列絕對值最大的行.int col;//當前處理的列int ta,tb;int LCM;int temp;for(col=0,k = 0;k < equ && col < var;++k,++col){max_r=k;for(i=k+1;i<equ;i++){if(abs(a[i][col])>abs(a[max_r][col])) max_r=i;}if(max_r!=k){for(j=k;j<var+1;j++) swap(a[k][j],a[max_r][j]);}if(a[k][col]==0){k--;continue;}for(i=k+1;i<equ;i++){// 枚舉要刪去的行.if(a[i][col]!=0){LCM = lcm(abs(a[i][col]),abs(a[k][col]));ta = LCM/abs(a[i][col]);tb = LCM/abs(a[k][col]);if(a[i][col]*a[k][col]<0)tb=-tb;//異號的情況是相加for(j=col;j<var+1;j++){a[i][j] =((a[i][j]*ta-a[k][j]*tb)%p+p)%p;;}}}}for (i = k; i < equ; i++){if (a[i][col] != 0) return -1;}for (i = var - 1; i >= 0; i--)//對應的就是從單位矩陣中為1的位置去解,跟著這個循環走兩邊就知道是怎么接出來唯一解的了{temp = a[i][var];for (j = i + 1; j < var; j++){if (a[i][j] != 0) temp =((temp- a[i][j] * x[j])%p+p)%p;//}int g=inv_exgcd(a[i][i],p);x[i]=temp*g%p;}return 0; } int main() {int i, j;int t;cin>>t;while(t--){scanf("%d %s",&p,str);init();Gauss();cout<<x[0];for (i = 1; i < var; i++)printf(" %d",x[i]);printf("\n");}return 0; }

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的poj2065 SETI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。