题目: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[110];
int qq[100010],we;
struct node
{int w,id;
}q[110];
#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)/2;if(q[mid].w==key)return mid;else if(q[mid].w>key){r=mid-1;}else{l=mid+1;}}return -1;
}
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=0;while(b){if(b&1){ret+=a;ret%=mod;}a<<=1;if(a>=mod) a%=mod;b>>=1;}return ret;
}
int pow_mod(int x,int n)//x^n%n
{if(n==1) return x%mod;x%=mod;int tmp=x;int ret=1;while(n){if(n&1) ret=mult_mod(ret,tmp);tmp=mult_mod(tmp,tmp);n>>=1;}return ret;
}
void init()
{memset(cn,0,sizeof(cn));tt=0;for(int i=48;i<=57;i++){q[tt].id=i;q[tt++].w=pow_mod(i,n);}for(int i=65;i<=90;i++){q[tt].id=i;q[tt++].w=pow_mod(i,n);}for(int i=97;i<=122;i++){q[tt].id=i;q[tt++].w=pow_mod(i,n);}qsort(q,tt,sizeof(q[0]),cmp);cn[0]=1;for(int i=1;i<tt;i++){if(q[i].w==q[i-1].w){cn[i]=2;cn[i-1]=2;}else cn[i]=1;}
}
char s[1000010];
int main()
{int T,da;bool FF;scanf("%d",&T);for(int z=1;z<=T;z++){FF=true;scanf("%d",&n);init();we=0;scanf("%s",s);int l=strlen(s);for(int i=0;i<l;i=i+3){da=s[i]-'0';for(int j=i+1;j<=i+2;j++){da=da*10+(s[j]-'0');}int t=er(0,tt-1,da);if(t==-1||cn[t]>1){printf("No Solution\n");FF=false;break;}else{qq[we++]=q[t].id;}}if(FF){for(int i=0;i<we;i++)printf("%c",qq[i]);printf("\n");}// printf("\n");
    }return 0;
}

SDUT2165:Crack Mathmen(快速幂)相关推荐

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

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

  2. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  3. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  4. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  5. BZOJ1965 [Ahoi2005]SHUFFLE 洗牌 快速幂

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1965 题意概括 对于扑克牌的一次洗牌是这样定义的,将一叠N(N为偶数)张扑克牌平均分成上下两叠,取 ...

  6. 牛客网练习赛44-B(快速幂+模拟)

    题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...

  7. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  8. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

  9. [HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]

    解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重 ...

最新文章

  1. 批量下载文件,循环中文件流没有关闭导致每次下载会累加之前的下载文件
  2. 是否finally块总是用Java执行?
  3. 【Groovy】MOP 元对象协议与元编程 ( 方法注入 | 使用 Mixin 混合进行方法注入 )
  4. 开关电源异址替换实战割接
  5. 十三、写了两年多Python文章的我,带你走进Python数据分析
  6. hog特征提取python代码_hog特征提取-python实现
  7. 【linux】设置镜像源
  8. tensorflow 实验过程可重复
  9. idea 安装jrebel6.4.3及破解
  10. 电脑图标变成白纸如何恢复
  11. android 海康云眸SDK简单使用
  12. Java实现堆栈(Stack)
  13. CF1694B Paranoid String 构造/子串计数
  14. python 如果你的年龄大于18_5分钟学会Python的if条件判断语句
  15. 2019年机器学习/ 深度学习热门论文集锦
  16. 听声变位测试软件,刺激战场:听声辩位其实有很大的学问,想了解的朋友请进来...
  17. 基于eBox旋转编码器
  18. Nginx 配置SSL 证书 cannot load certificate No such file or directory
  19. CSS网页布局之传统解决方案与Flex大法
  20. mysql属于dql语句的是_4.MySql中的SQL语句(三):DQL

热门文章

  1. Linux 3D 编程学习总结
  2. babel7中 preset-env 完全使用
  3. HihoCoder 1671 DFS
  4. Html和CSS的关系
  5. MYSQL两个数据库字符集保持一致问题
  6. 面试题_89_to_92_单元测试 JUnit 面试题
  7. numix Docky
  8. DropDownlist的Item显示多列数据
  9. 如何通过反射调用扩展方法?
  10. 幼儿园带括号算式口诀_整理41组“数学顺口溜”+大九九乘法口诀表!给孩子们收藏...