题目:http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2165&cid=1431

快速幂。

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <queue>
#include <vector>
#include <algorithm>
#include <queue>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int tt,n,cn[];
int qq[],we;
struct node
{
int w,id;
}q[];
#define mod 997
int er(int lf,int rf,int key)
{
int l=lf,mid;
int r=rf;
while(l<=r)
{
mid = l+(r-l)/;
if(q[mid].w==key)
return mid;
else if(q[mid].w>key)
{
r=mid-;
}
else
{
l=mid+;
}
}
return -;
}
int cmp(const void *a,const void *b)
{
struct node *aa=(struct node *)a;
struct node *bb=(struct node *)b;
return aa->w-bb->w;
}
int mult_mod(int a,int b)//计算 (a*b)%c.
{
a%=mod;// 利用二分思想减少相乘的时间
b%=mod;
ll ret=;
while(b)
{
if(b&)
{
ret+=a;
ret%=mod;
}
a<<=;
if(a>=mod) a%=mod;
b>>=;
}
return ret;
}
int pow_mod(int x,int n)//x^n%n
{
if(n==) return x%mod;
x%=mod;
int tmp=x;
int ret=;
while(n)
{
if(n&) ret=mult_mod(ret,tmp);
tmp=mult_mod(tmp,tmp);
n>>=;
}
return ret;
}
void init()
{
memset(cn,,sizeof(cn));
tt=;
for(int i=;i<=;i++)
{
q[tt].id=i;
q[tt++].w=pow_mod(i,n);
}
for(int i=;i<=;i++)
{
q[tt].id=i;
q[tt++].w=pow_mod(i,n);
}
for(int i=;i<=;i++)
{
q[tt].id=i;
q[tt++].w=pow_mod(i,n);
}
qsort(q,tt,sizeof(q[]),cmp);
cn[]=;
for(int i=;i<tt;i++)
{
if(q[i].w==q[i-].w)
{
cn[i]=;
cn[i-]=;
}
else cn[i]=;
}
}
char s[];
int main()
{
int T,da;
bool FF;
scanf("%d",&T);
for(int z=;z<=T;z++)
{
FF=true; scanf("%d",&n);
init();
we=;
scanf("%s",s);
int l=strlen(s);
for(int i=;i<l;i=i+)
{
da=s[i]-'';
for(int j=i+;j<=i+;j++)
{
da=da*+(s[j]-'');
}
int t=er(,tt-,da);
if(t==-||cn[t]>)
{
printf("No Solution\n"); FF=false;
break;
}
else
{
qq[we++]=q[t].id;
}
}
if(FF)
{
for(int i=;i<we;i++)
printf("%c",qq[i]);
printf("\n"); }
// printf("\n");
}
return ;
}

SDUT2165:Crack Mathmen(快速幂)的更多相关文章

  1. sdut2165 Crack Mathmen (山东省第二届ACM省赛)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/svitter/article/details/24270265 本文出自:http://blog.c ...

  2. sdut 2165:Crack Mathmen(第二届山东省省赛原题,数论)

    Crack Mathmen Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  Since mathmen take securit ...

  3. Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)

    Crack Mathmen TimeLimit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Since mathmen take security ...

  4. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  5. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  6. hdu 4704 Sum (整数和分解+快速幂+费马小定理降幂)

    题意: 给n(1<n<),求(s1+s2+s3+...+sn)mod(1e9+7).其中si表示n由i个数相加而成的种数,如n=4,则s1=1,s2=3.                  ...

  7. Codeforces632E Thief in a Shop(NTT + 快速幂)

    题目 Source http://codeforces.com/contest/632/problem/E Description A thief made his way to a shop. As ...

  8. GDUFE-OJ 1203x的y次方的最后三位数 快速幂

    嘿嘿今天学了快速幂也~~ Problem Description: 求x的y次方的最后三位数 . Input: 一个两位数x和一个两位数y. Output: 输出x的y次方的后三位数. Sample ...

  9. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

随机推荐

  1. 8.按要求编写Java应用程序。 (1)建立一个名叫Cat的类: 属性:姓名、毛色、年龄 行为:显示姓名、喊叫 (2)编写主类: 创建一个对象猫,姓名为“妮妮”,毛色为“灰色”,年龄为2岁,在屏幕上输 出该对象的毛色和年龄,让该对象调用显示姓名和喊叫两个方法。

    package liu0917; public class Cat { String name="妮妮"; int age=2; String maose="灰色&quo ...

  2. 【IOS笔记】Event Delivery: The Responder Chain

    Event Delivery: The Responder Chain  事件分发--响应链 When you design your app, it’s likely that you want t ...

  3. Bootstrap页面布局20 - BS缩略图

    <div class='container-fluid'> <h2 class='page-header'>Bootstrap 缩略图</h2> <ul cl ...

  4. JS基础语法

    1.注释语法://单行注释./*多行注释*/. 2.输出语法:{1.alert("要输出的字符串"):.alert(输出其类型):  2.confirm():弹出一个可以和用户交互 ...

  5. Oracle存储过程基本语法 存储过程

    Oracle存储过程基本语法 存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR RE ...

  6. VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)

    新建空白窗体,然后粘帖下面代码: Option ExplicitPublic WithEvents br As VBControlExtender Private Sub br_ObjectEvent ...

  7. GZip压缩的js文件IE6下面不能包含<script>标签

    IE6下面,GZip压缩的js文件,如果js中包含<script>标签,一遇到这样的标签,后面的内容居然都截断了,狂晕! 花了我一个晚上来找原因.. 需要将字符串'<script&g ...

  8. pylint window下安装与使用

    简介 Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8)和有潜在问题的代码. Pylint ...

  9. Android源码剖析之Framwork层消息传递(Wms到View)

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 前面讲过Wms.Ams与Activity的一系列交互,包括创建过程.消息传递.窗口展示等,紧接上篇介 ...

  10. 基于vs2005以上版本Qt程序发布的注意事项(讲了manifest的问题)

    最近发现了一个非常恼人的程序deployment的问题,估计大家有可能也会遇到,特此memo. 问题的出现我觉得主要还是微软搞的花头太多, 一个不知所谓的manifest文件让本来简单的程序发布变得困 ...