题目描述:

多组数据,每次给出一个模数$p$和一个表示答案的字符串,

相当于给出一个方程组:$$a_1*1^{1}+a_2*1^{2}+……+a_n*1^{n}=f_1$$

$$a_1*2^{1}+a_2*2^{2}+……+a_n*2^{n}=f_2$$

等等共$n$个方程。

求$a_i$。

题解:

高消时搞一下逆元即可。

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = ;
int t,p,n,a[N][N];
char ch[N];
ll fastpow(ll x,int y)
{
ll ret = ;
while(y)
{
if(y&)ret=ret*x%p;
x=x*x%p;
y>>=;
}
return ret;
}
void gs()
{
for(int i=;i<=n;i++)
{
int tmp = i;
for(int j=i+;j<=n;j++)
if(abs(a[j][i])>abs(a[tmp][i]))tmp=j;
if(tmp!=i)
for(int j=i;j<=n+;j++)swap(a[i][j],a[tmp][j]);
int now=fastpow(a[i][i],p-);
for(int j=i;j<=n+;j++)a[i][j]=a[i][j]*now%p;
for(int j=i+;j<=n;j++)
{
now = a[j][i];
for(int k=i;k<=n+;k++)
a[j][k]=(a[j][k]-now*a[i][k]%p+p)%p;
}
}
for(int i=n;i>=;i--)
for(int j=i-;j>=;j--)
a[j][n+]=(a[j][n+]-a[j][i]*a[i][n+]%p+p)%p;
}
int main()
{
scanf("%d",&t);
while(t--)
{
memset(a,,sizeof(a));
scanf("%d%s",&p,ch+);
n = strlen(ch+);
for(int k=;k<=n;k++)
{
int K = ;
for(int i=;i<=n;i++,K=K*k%p)
a[k][i]=K;
if(ch[k]>='a'&&ch[k]<='z')a[k][n+]=ch[k]-'a'+;
}
gs();
for(int i=;i<=n;i++)
printf("%d ",a[i][n+]);
puts("");
}
return ;
}

poj2065 SETI的更多相关文章

  1. POJ2065 SETI 高斯消元

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

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

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

  3. [Gauss]POJ2065 SETI

    题意: *代表0,a-z代表1-26 题目第三行给了一个公式 f (k) = $\sum\limits_{i=0}^{n-1} a_i k^i \pmod{P}$  {f(i)是输入的一串字符串中第i ...

  4. 【poj2065】 SETI

    http://poj.org/problem?id=2065 (题目链接) 题意 题意半天看不懂..给你一个素数P(P<=30000)和一串长为n的字符串str[].字母'*'代表0,字母a-z ...

  5. ACdream 1430——SETI——————【后缀数组,不重叠重复子串个数】

    SETI Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statist ...

  6. UVA 1563 - SETI (高斯消元+逆元)

    UVA 1563 - SETI option=com_onlinejudge&Itemid=8&page=show_problem&category=520&probl ...

  7. 【t040】SETI任务

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] Sqybi的电脑在做一个任务,就是SETI@home,据说这个任务在全世界有500 多万台电脑在同时做 ...

  8. 高斯消元几道入门题总结POJ1222&&POJ1681&&POJ1830&&POJ2065&&POJ3185

    最近在搞高斯消元,反正这些题要么是我击败了它们,要么就是这些题把我给击败了.现在高斯消元专题部分还有很多题,先把几道很简单的入门题总结一下吧. 专题:http://acm.hust.edu.cn/vj ...

  9. POJ_2065 SETI 【同余高斯消元】

    一.题目  SETI 二.分析 给定一个模数,一串字符串,字符串长度为N,相当于是N个方程的答案,而这N个方程中有N个未知数,要求的就是这N个未知数的值,很显然的高斯消元,遇到模数和除法,用逆元就好. ...

随机推荐

  1. mysql关于时间函数的应用

    1.获取今天的数据 date_format(publishtime, '%Y-%m-%d')= date_format(now(), '%Y-%m-%d') 2.获取今天和明天的数据 server.b ...

  2. yii1 compoment实现自己的db类

    突然发现yii1并没有实现mysql的读写分离默认配置,而用yii1的配置实现读写分离又很麻烦,所以我写了一个db的辅助类 首先我们需要配置一下一下辅助db的compoment类,yii的compom ...

  3. Untiy检测各类设备输入

    轴需要单独设置 using UnityEngine; using System.Collections; using UnityEngine.UI; public class OutputKey : ...

  4. python int对象的方法

    1.求绝对值 >>> a = -10 >>> a.__abs__() 10 >>> abs(10) 10 2.加法 >>> a ...

  5. JAVA多线程(二) 并发队列和阻塞队列

    github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service/ ...

  6. April Fools Contest 2017 E

    Description Input The input consists of four lines, each line containing a single digit 0 or 1. Outp ...

  7. 洛谷 P2398 GCD SUM || uva11417,uva11426,uva11424,洛谷P1390,洛谷P2257,洛谷P2568

    https://www.luogu.org/problemnew/show/P2398 $原式=\sum_{k=1}^n(k\sum_{i=1}^n\sum_{j=1}^n[(i,j)=k])$ 方法 ...

  8. LIS(变形) HDOJ 5489 Removed Interval

    题目传送门 题意:求删掉连续L长度后的LIS 分析:记rdp[i]表示以a[i]为开始的LIS长度,用nlogn的办法,二分查找-a[i].dp[i]表示以a[i]为结尾并且删去[i-L-1, i-1 ...

  9. Java项目的命名规则

    Java类的命名规范如下: 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{ ...

  10. vue的开发技巧

    1.监听组件的生命周期 比如有父组件 Parent和子组件 Child,如果父组件监听到子组件挂载 mounted就做一些逻辑处理,常规的写法可能如下: // Parent.vue <Child ...