sdut2165 Crack Mathmen (山东省第二届ACM省赛)
版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/svitter/article/details/24270265
本文出自:http://blog.csdn.net/svitter。转载请注明出处。
原题:点击打开链接
和晨阳哥一同讨论了一下这个题目=
=最终在今晚AC了。
这个题目能够说是RSA加密算法的变种。。
考虑997是素数,那么符合欧拉定理。然后想到费马小定理 m ^ 996 MOD 997 = 1;
由于一般的RSA解密算法都是C^d mod 997 = m 这样的形式,苦思冥想了好久解密算法,仍然没有得到解决。
最后最终大彻大悟的明确:
呵呵,你想多了。。这个题目能够用打表过- -
要注意的问题:
1.加password与原码是要一一相应,在原码中已经标出。
2.计算MOD幂的时候使用二分算法,假设不使用必定超时(n 能够取到 10 ^ 9)。这个算法根据pow算法得出。
/*author : Vit/csdn
*from: http://blog.csdn.net/svitter
*if you love it, please show the original site*/
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
#define lln long long int
char str[1000010];
char key[1001];
lln ch[127];
lln n;
lln ans, tt, temp;
bool get(lln &c)
{
temp = c, ans = 1, tt = n;
while(tt)
{
if(tt &1)
ans = (ans * temp) % 997;
temp = temp * temp % 997;
tt = tt >> 1;
}
if(ch[c] == -1)
ch[c] = ans;
}
bool init()
{
lln i;
memset(ch, -1, sizeof(ch));
memset(key, '\0', sizeof(key));
for(i = 32; i < 127; i++)
{
if(get(i))
continue;
else
return false;
}
for(i = 32; i < 127; i++)
{
lln &tmp = ch[i];
if(key[tmp] == '\0')//检查码值同样的情况
key[ch[i]] = (char)i;
else
{
return false;
}
}
return true;
}
void ace()
{
lln c, cur;
lln length;
lln i, l;
char temp[400000];
bool isstr;
cin >> c;
while(c--)
{
while(cin >> n)
{
memset(str, '\0', sizeof(str));
scanf("%s", str);
if(init())
{
l = 0;
isstr = 1;
//cout << key[590] << endl;
length = strlen(str);
for(i = 0; i < length; i += 3)
{
cur = (str[i]-'0') *100 + (str[i+1]-'0') * 10 + str[i+2] - '0';
if(key[cur] != '\0')//没有相应的翻译码
temp[l++] = key[cur];
else
{
isstr = false;
break;
}
}
if(isstr)
{
for(i = 0; i < l; i++)
cout << temp[i];
cout << endl;
}
else
{
cout << "No Solution" << endl;
}
}
else
{
cout << "No Solution" << endl;
}
}
}
}
int main()
{
ace();
return 0;
}
sdut2165 Crack Mathmen (山东省第二届ACM省赛)的更多相关文章
- Shopping(山东省第一届ACM省赛)
Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together.You can ass ...
- [2011山东省第二届ACM大学生程序设计竞赛]——Identifiers
Identifiers Time Limit: 1000MS Memory limit: 65536K 题目:http://acm.sdut.edu.cn/sdutoj/problem.php?act ...
- Balloons(山东省第一届ACM省赛)
Balloons Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Both Saya and Kudo like balloons ...
- Emergency(山东省第一届ACM省赛)
Emergency Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Kudo’s real name is not Kudo. H ...
- 山东省第一届ACM省赛
ID PID Title Accepted Submit A 2151 Phone Number 22 74 B 2159 Ivan comes again! 1 17 C 2158 Hello ...
- sdut 2165:Crack Mathmen(第二届山东省省赛原题,数论)
Crack Mathmen Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Since mathmen take securit ...
- [2011山东ACM省赛] Mathman Bank(模拟题)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/24187925 Mathman Bank ni ...
- 山东ACM省赛历届入口
山东省第一届ACM大学生程序设计竞赛 山东省第二届ACM大学生程序设计竞赛 山东省第三届ACM大学生程序设计竞赛 山东省第四届ACM大学生程序设计竞赛 山东省第五届ACM大学生程序设计竞赛 山东省第六 ...
- [2011山东ACM省赛] Sequence (动态规划)
Sequence Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Given an integer number sequence ...
随机推荐
- Windows 平台安装 MongoDB
官方文档:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/ 系统环境:win7 MongoDb:mongodb- ...
- thinkphp %s %d %f
%s -- 表示字段串%d -- 表示整形数字%f -- 表示浮点数 例子:$order_number = $m_ebay_order_numbers->where("ebay_ord ...
- 自定义DateTimeInput(时间)控件的显示格式
DateTimeInput控件已有的几种格式可以在Format属性中选择: 但这几种格式仍无法满足我的要求怎么办? 例如想将显示格式定为类似这样的格式:2010-06-11 20:02:52,两步搞定 ...
- BUCTOJ1073
#include "iostream" #include "algorithm" using namespace std; ; struct Time { in ...
- ES bulk源码分析——ES 5.0
对bulk request的处理流程: 1.遍历所有的request,对其做一些加工,主要包括:获取routing(如果mapping里有的话).指定的timestamp(如果没有带timestamp ...
- spring cloud学习(七)Spring Cloud Config(续)
Spring Cloud Config(续) 个人参考项目 个人博客 : https://zggdczfr.cn/ 个人参考项目 : (整合到上一个案例中)https://github.com/Fun ...
- ps和fireworks切图网页优化,jpg为80时
- bzoj3404
题解: 博弈论 然而我直接暴力dp 代码: #include<bits/stdc++.h> using namespace std; ; int f[N],n,T; void init() ...
- DevExpress WPF入门指南:Smart Tag扩展功能
Smart Tag提供了一些扩展功能用于简化指定某些属性的程序,比如下面这几项: Application Theme Data Context Image Gallery Convert to DXW ...
- java设计模式 略版
<转> 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结 ...