http://poj.org/problem?id=2065 (题目链接)

题意

  题意半天看不懂。。给你一个素数P(P<=30000)和一串长为n的字符串str[]。字母'*'代表0,字母a-z分别代表1-26,这n个字符所代表的数字分别代表f(1)、f(2)....f(n)。定义: ${f(k)=\sum_{i=0}^{n-1}{a_ik^i~(mod~p)}~(1<=k<=n,0<=a_i<P)}$,求a0、a1.....an-1。题目保证肯定有唯一解。

Solution

  直接高斯消元,因为是模方程组所以除的时候求个逆元即可。

代码

  1. // poj2065
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cstdlib>
  5. #include<cstring>
  6. #include<cstdio>
  7. #include<cmath>
  8. #include<map>
  9. #define LL long long
  10. #define inf 2147483640
  11. #define Pi acos(-1,0)
  12. #define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
  13. using namespace std;
  14.  
  15. const int maxn=100;
  16. int a[maxn][maxn],n,P;
  17. char ch[maxn];
  18.  
  19. int power(int a,int b,int c) {
  20. int res=1;
  21. while (b) {
  22. if (b&1) res=res*a%c;
  23. b>>=1;a=a*a%c;
  24. }
  25. return res;
  26. }
  27. void Gauss() {
  28. for (int r,i=1;i<=n;i++) {
  29. r=i;
  30. for (int j=i+1;j<=n;j++) if (abs(a[r][i])<abs(a[j][i])) r=j;
  31. if (a[r][i]==0) continue;
  32. if (r!=i) for (int j=1;j<=n+1;j++) swap(a[i][j],a[r][j]);
  33. int inv=power(a[i][i],P-2,P);
  34. for (int j=1;j<=n;j++) if (j!=i) {
  35. for (int k=n+1;k>=i;k--)
  36. a[j][k]=(a[j][k]-(a[j][i]*inv)%P*a[i][k]%P+P)%P;
  37. }
  38. }
  39. }
  40.  
  41. int main() {
  42. int T;scanf("%d",&T);
  43. while (T--) {
  44. scanf("%d",&P);
  45. scanf("%s",ch+1);
  46. n=strlen(ch+1);
  47. for (int i=1;i<=n;i++) {
  48. int tmp=1;
  49. for (int j=1;j<=n;j++) {
  50. a[i][j]=tmp;
  51. tmp=tmp*i%P;
  52. }
  53. a[i][n+1]=ch[i]=='*' ? 0 : ch[i]-'a'+1;
  54. }
  55. Gauss();
  56. for (int i=1;i<=n;i++) {
  57. if (a[i][i]==0) {printf("0 ");continue;}
  58. int inv=power(a[i][i],P-2,P);
  59. printf("%d ",inv*a[i][n+1]%P);
  60. }
  61. puts("");
  62. }
  63. return 0;
  64. }

  

【poj2065】 SETI的更多相关文章

  1. 【t040】SETI任务

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

  2. 【转】ACM训练计划

    [转] POJ推荐50题以及ACM训练方案 -- : 转载自 wade_wang 最终编辑 000lzl POJ 推荐50题 第一类 动态规划(至少6题, 和 必做) 和 (可贪心) (稍难) 第二类 ...

  3. 【原】Java学习笔记020 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 成员方法的参数列表 ...

  4. 性能分析神器VisualVM【转】

    性能分析神器VisualVM[转] Posted on 2015-04-17 09:37 WadeXu 阅读(5809) 评论(6) 编辑 收藏 VisualVM 是一款免费的,集成了多个 JDK 命 ...

  5. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  7. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  8. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  9. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

随机推荐

  1. iOS开发之Socket

    在IOS开发中,网络请求链接往往是HTTP请求,但是有些需求比较特殊,需要保持持续连接,就需要用到Socket了. 另外在游戏开发中,常常会用到Socket连接,因为http请求数据往往需要用户主动请 ...

  2. DIY一个高大上带提醒的计时器,简单实用,你还在等什么

    小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的<Python聊天室>,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用.好了,闲话不多说,今天要给各位看官们 ...

  3. TortoiseSVN提交提示423 Locked的解决办法

    往svn上提交文件时,文件可能被另一个人占用,这时提交就会报423Locked错误. 此办法是阅读官方文档(TortoiseSVN-1.6.16-zh_CN.pdf) 4.21 锁部分提供的办法: 首 ...

  4. Lucene索引文件学习

     最近在做搜索,抽空看一下lucene,资料挺多的,不过大部分都是3.x了--在对着官方文档大概看一下. 优化后的lucene索引文件(4.9.0) 一.段文件 1.段文件:segments_5p和s ...

  5. 使用 python 获取 httpd 程序所占用物理内存

    #!/usr/bin/env python #encoding: utf-8 ''' 思路: /proc/xx_pid/status 文件中的关键字段 VmRSS 来获取某个进程占用的物理内存 步骤: ...

  6. android sqlite select,update,delete语法

    String sql = "update recentsongtab set usetime=? , strdatetime=? where songid=?";//修改的SQL语 ...

  7. linux中文件(档案)和目录的RWX权限意义

    1 权限对文件的意义 权限对文件的意义很好理解,下面我们看看权限对目录的意义. 2 权限对目录的意义 档案是存放实际资料的所在,那么目录主要是储存啥玩意啊?目录主要的内容在记录档名清单,档名与目录有强 ...

  8. RabbitMQ学习资源

    AMQP协议 AMQP协议介绍 AMQP协议基本概念 官方入门教程 安装文档 官方安装文档 Linux下 RabbitMQ的安装与配置 windows下安装 ubuntu下安装 RabbitMQ 集群 ...

  9. LLVM 笔记(五)—— LLVM IR

    ilocker:关注 Android 安全(新手) QQ: 2597294287 LLVM 的 IR (Intermediate Representation) 是其设计中的最重要的部分.优化器在进行 ...

  10. Vim自动补全神器–YouCompleteMe

    一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势 1.基于语义补全 2.整合实现了多种插件 clang_complete.AutoComplPop .Super ...