UVA 1563 - SETI (高斯消元+逆元)
UVA 1563 - SETI
题意:依据题目那个式子。构造一个序列,能生成对应字符串
思路:依据式子能构造出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 (高斯消元+逆元)的更多相关文章
- 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 ...
- UVA 11542 - Square(高斯消元)
UVA 11542 - Square 题目链接 题意:给定一些数字.保证这些数字质因子不会超过500,求这些数字中选出几个,乘积为全然平方数,问有几种选法 思路:对每一个数字分解成质因子后.发现假设要 ...
- poj 2065 SETI 高斯消元
看题就知道要使用高斯消元求解! 代码如下: #include<iostream> #include<algorithm> #include<iomanip> #in ...
- POJ 2065 SETI [高斯消元同余]
题意自己看,反正是裸题... 普通高斯消元全换成模意义下行了 模模模! #include <iostream> #include <cstdio> #include <c ...
- POJ2065 SETI 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ2065 题意概括 多组数据,首先输入一个T表示数据组数,然后,每次输入一个质数,表示模数,然后,给出一 ...
- UVa 11542 Square (高斯消元)
题意:给定 n 个数,从中选出一个,或者是多个,使得选出的整数的乘积是完全平方数,求一共有多少种选法,整数的素因子不大于 500. 析:从题目素因子不超过 500,就知道要把每个数进行分解.因为结果要 ...
- POJ SETI 高斯消元 + 费马小定理
http://poj.org/problem?id=2065 题目是要求 如果str[i] = '*'那就是等于0 求这n条方程在%p下的解. 我看了网上的题解说是高斯消元 + 扩展欧几里德. 然后我 ...
- POJ2065 SETI(高斯消元 同模方程)
(a1 * 1^0 + a2 * 1^1 + ... an * 1^n - 1) % P = f1 .... (a1 * n^0 + a2 * n^1 + ... an - 1 * ...
- POJ 2065 SETI 高斯消元解线性同余方程
题意: 给出mod的大小,以及一个不大于70长度的字符串.每个字符代表一个数字,且为矩阵的增广列.系数矩阵如下 1^0 * a0 + 1^1 * a1 + ... + 1^(n-1) * an-1 = ...
随机推荐
- Agri-Net(prim)
http://poj.org/problem?id=1258 #include<stdio.h> #include<string.h> ; <<; int map[ ...
- .NET Core Run On Docker By Kubernetes 系列文章汇总
前言介绍 .NET Core是微软新一代主力编程平台,开源.免费.跨平台.轻量级.高性能,支持Linux.Docker.k8s等环境,适合开发微服务.云原生.大型互联网应用.全开源解决方案. Dock ...
- Git 和 Redis 的基本认识
一: Git 二: Redis
- Python 38 初识数据库
数据库 1.什么是mysql,什么是数据库? 文件处理就可以将数据永久存储 问题 1.管理不方便 2.文件操作效率问题 3.一个程序不太可能仅运行在同一台电脑上 提高计算机性能的方式 1.垂直扩展 ...
- POJ 2945 trie树
Find the Clones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 7704 Accepted: 2879 Descr ...
- elasticsearch5.3.0 bulk index 性能调优实践
elasticsearch5.3.0 bulk index 性能调优实践 通俗易懂
- Android第三方登陆之新浪微博Weibo篇(原生登陆授权)
前言 Android第三方登录可以说是非常的常见,今天主要先说一下新浪微博第三方登陆授权. SDK版本支持 SDK v3.0已经发布了支持iPhone和Android的版本. 须将你的应用的包名签名信 ...
- MongoDB安装使用教程
参考菜鸟教程:http://www.runoob.com/mongodb/mongodb-tutorial.html
- JavaScript小技巧总结
JavaScript是一种脚本语言: 语法类似于常见的高级语言 脚本语言,不需要编译就可以由解释器直接运行 变量松散定义 面向对象 JSON是一种数据交换格式,而JSONP是JSON的一种使用模式,是 ...
- 浅谈 Unserscore.js 中 _.throttle 和 _.debounce 的差异
来源:http://blog.coding.net/blog/the-difference-between-throttle-and-debounce-in-underscorejs Unsersco ...