UVA 1563 - SETI

option=com_onlinejudge&Itemid=8&page=show_problem&category=520&problem=4338&mosmsg=Submission+received+with+ID+14015694" target="_blank" style="">题目链接

题意:依据题目那个式子。构造一个序列,能生成对应字符串

思路:依据式子能构造出n个方程。一共解n个未知量,利用高斯消元去解,中间过程有取摸过程。所以遇到除法的时候要使用逆元去搞

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int N = 105; int pow_mod(int x, int k, int mod) {
int ans = 1;
while (k) {
if (k&1) ans = ans * x % mod;
x = x * x % mod;
k >>= 1;
}
return ans;
} int inv(int a, int n) {
return pow_mod(a, n - 2, n);
} int t, p, n, A[N][N];
char str[N]; int hash(int c) {
if (c == '*') return 0;
return c - 'a' + 1;
} void build() {
for (int i = 0; i < n; i++) {
A[i][n] = hash(str[i]);
int tmp = 1;
for (int j = 0; j < n; j++) {
A[i][j] = tmp;
tmp = tmp * (i + 1) % p;
}
}
} void gauss() {
for (int i = 0; i < n; i++) {
int r;
for (r = i; r < n; i++)
if (A[r][i]) break;
if (r == n) continue;
for (int j = i; j <= n; j++) swap(A[r][j], A[i][j]);
for (int j = 0; j < n; j++) {
if (i == j) continue;
if (A[j][i]) {
int tmp = A[j][i] * inv(A[i][i], p) % p;
for (int k = i; k <= n; k++) {
A[j][k] = (((A[j][k] - tmp * A[i][k]) % p) + p) % p;
}
}
}
}
for (int i = 0; i < n; i++)
printf("%d%c", A[i][n] * inv(A[i][i], p) % p, i == n - 1 ? '\n' : ' ');
} int main() {
scanf("%d", &t);
while (t--) {
scanf("%d%s", &p, str);
n = strlen(str);
build();
gauss();
}
return 0;
}

UVA 1563 - SETI (高斯消元+逆元)的更多相关文章

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

  2. UVA 11542 - Square(高斯消元)

    UVA 11542 - Square 题目链接 题意:给定一些数字.保证这些数字质因子不会超过500,求这些数字中选出几个,乘积为全然平方数,问有几种选法 思路:对每一个数字分解成质因子后.发现假设要 ...

  3. poj 2065 SETI 高斯消元

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

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

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

  5. POJ2065 SETI 高斯消元

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

  6. UVa 11542 Square (高斯消元)

    题意:给定 n 个数,从中选出一个,或者是多个,使得选出的整数的乘积是完全平方数,求一共有多少种选法,整数的素因子不大于 500. 析:从题目素因子不超过 500,就知道要把每个数进行分解.因为结果要 ...

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

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

  8. POJ2065 SETI(高斯消元 同模方程)

    (a1 * 1^0  +   a2 * 1^1  + ...  an * 1^n - 1) % P = f1 .... (a1 * n^0  +   a2 * n^1  + ...  an - 1 * ...

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

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

随机推荐

  1. Rails5 关联表格搜索

    创建: 2017/08/13   other_type_car = Car.joins(:car_type).active.find_by(car_type: car_type)   @recomme ...

  2. Hamming Distance(随机算法)

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 题意:计算任意两个十六进制的数异或后1的最少个数. 思路:用随机数随机产生两个数作为下标,记录这两个数异或 ...

  3. centos7用rpm安装mysql5.7【初始用yum安装发现下载非常慢,就考虑本地用迅雷下载rpm方式安装】

    1.下载 4个rpm包 mysql-community-client-5.7.26-1.el7.x86_64.rpmmysql-community-common-5.7.26-1.el7.x86_64 ...

  4. go package包的使用

    一.标准库 引入 在我们之前所写的所以代码中,我们基本上可以看到fmt这个导入的包,但是我们却不知道如何去写这种包. 如果我们可以自己去写,那么我们就可以将一个功能的集合统一的放入包中,便于以后使用, ...

  5. Django:提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have A

    Django:提交表单报错:RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you ...

  6. 书不在多,精读则灵 - Oracle入门书籍推荐

      作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:http://www.eygle.com/archives/2006/08/ora ...

  7. ★Java面向对象(一)——————————基本概念

    package boll; /* 用Java语言对现实生活中的事物进行描述. 通过类的形式来体现, 怎么描述呢? 对于事物的描述通常只有两个方面,一个是属性,一个是行为. 只要明确该事物的行为和属性并 ...

  8. Assembly之example

    Here is a simple example by assembly language. It is based on openMSP430. Very important is to under ...

  9. java中的位运算及移位运算

    为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: &    按位与 |     按位或 ^    按位异或 ~    按位取反 Java中有三个移位运算符: 左移:&l ...

  10. HDU_1850_nim游戏

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...