题目描述:

多组数据,每次给出一个模数$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. 第十二篇 .NET高级技术之lambda表达式

    最近由于项目需要,刚刚学完了Action委托和Func<T>委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利.才能使代码更加简介 ...

  2. servlet重定向到jsp后样式无法正常显示

    原因是在servlet中转发时css和图片的路径变成相对于这个servlet的相对路径而非相对于web项目的路径了. 解决办法:导入css样式和图片时把css写成动态绝对路径, 如用EL表达式表示: ...

  3. spring 通配符

    原文地址:http://www.bubuko.com/infodetail-848675.html classpath是指 WEB-INF文件夹下的classes目录(惯例大于配置) classpat ...

  4. c++,类的对象作为形参时一定会调用复制构造函数吗?

    c++,类的对象作为形参时一定会调用复制构造函数吗? 答:如果参数是引用传递,则不会调用任何构造函数:如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在, ...

  5. Hdu 2888 Check Corners (二维RMQ (ST))

    题目链接: Hdu 2888 Check Corners 题目描述: 给出一个n*m的矩阵,问以(r1,c1)为左上角,(r2,c2)为右下角的子矩阵中最大的元素值是否为子矩阵的顶点? 解题思路: 二 ...

  6. 简单几何(求交点) UVA 11178 Morley's Theorem

    题目传送门 题意:莫雷定理,求三个点的坐标 分析:训练指南P259,用到了求角度,向量旋转,求射线交点 /*********************************************** ...

  7. h5-35-ajax轮询实现推送效果

    data.txt { "number1":1200, } index.html <!DOCTYPE html> <html> <head> &l ...

  8. Android的代码适配方案

    public class DensityUtil { private DensityUtil(){ throw new AssertionError(); } /** * dp转px * @param ...

  9. 74LVC2G241双缓冲3态驱动器

  10. (026)[工具软件]剪切板管理:Ditto

    剪切板管理软件:Ditto官网:http://ditto-cp.sourceforge.net/