uva1563
https://vjudge.net/problem/UVA-1563
高斯消元解同余方程组 就是把原来的除法换成逆元,其他的都一样
#include<bits/stdc++.h>
using namespace std;
const int N = ;
int n, p;
int a[N][N];
char s[N];
int power(int x, int t)
{
int ret = ;
for(; t; t >>= , x = x * x % p) if(t & ) ret = ret * x % p;
// printf("ret=%d\n", ret);
return ret;
}
void build()
{
for(int i = ; i < n; ++i)
{
if(s[i + ] == '*') a[i][n] = ;
else a[i][n] = s[i + ] - 'a' + ;
}
for(int k = ; k < n; ++k)
for(int i = ; i < n; ++i)
a[k][i] = power(k + , i);
}
void gauss_jordan()
{
for(int now = ; now < n; ++now)
{
int x = now;
for(int i = now; i < n; ++i) if(abs(a[i][now]) > abs(a[x][now])) x = i;
for(int i = ; i <= n; ++i) swap(a[now][i], a[x][i]);
int inv = power(a[now][now], p - );
for(int i = now; i <= n; ++i) a[now][i] = a[now][i] * inv % p; // /a[now][now]
for(int i = ; i < n; ++i) if(i != now && a[i][now])
{
int t = a[i][now]; // a[i][j] = a[i][j] - t * a[now][j]
for(int j = ; j <= n; ++j) a[i][j] = ((a[i][j] % p - t * a[now][j] % p) % p + p)% p;
}
}
}
int main()
{
int T; scanf("%d", &T);
while(T--)
{
memset(a, , sizeof(a));
scanf("%d%s", &p, s + ); n = strlen(s + );
build();
gauss_jordan();
for(int i = ; i < n - ; ++i) printf("%d ", a[i][n]);
printf("%d\n", a[n - ][n]);
}
return ;
}
uva1563的更多相关文章
随机推荐
- Python之爬虫-中国大学排名
Python之爬虫-中国大学排名 #!/usr/bin/env python # coding: utf-8 import bs4 import requests from bs4 import Be ...
- clip-path实现loading圆饼旋转效果以及其他方法
一.loading效果 二.clip-path css中的剪切clip-path属性是CSS Masking模块的一部分. 矩形 clip-path:inset(top right bottom le ...
- Leetcode 174.地下城游戏
地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角.地下城是由 M x N 个房间组成的二维网格.我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主. ...
- [OJ#40]后宫佳丽
[OJ#40]后宫佳丽 试题描述 如果机房要关门了,或者有妹子在等你,你可以直接看最后一句话. Fyq 是一只饥渴的鸭子. Fyq 有一个充实的后宫,可惜他总是体力不支,为此他经常苦恼,总是想方设法让 ...
- 关于iphone 微信浏览器编码问题
这个问题最终没有完美的解决,给出的一个解决方法是返回一个html文档.
- bzoj 2223 [Coci 2009]PATULJCI
[Coci 2009]PATULJCI Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1286 Solved: 553[Submit][Status ...
- 2k进制数(codevs 1157)
题目描述 Description 设r是个2k进制数,并满足以下条件: (1)r至少是个2位的2k进制数. (2)作为2k进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为 ...
- msp430入门学习23
msp430的ADC(模数转换) msp430入门学习
- mysql 安装与卸载
mysql用了也好几年了,但每次安装完或者卸载完就忘记了安装步骤以及卸载步骤,因此将关键的步骤记录下来,供以后参考. 1.mysql安装 ①安装类型有typical,complete,custom,一 ...
- Redis的集群方案之Sentinel(哨兵模式)(待实践)
哨兵模式是主从切换的一种方案,但是可以借助此方案实现集群,达到高可用. 先收集教程,待实践. 参考: https://redis.io/topics/sentinel(官方文档) http://ife ...