字符加密 cipher
Description:
Valentino 函数的定义:
对于一个由数字和小写字母组成的字符串 S,两个整数 K,M,将 S 视为一个 P 进制数,定义:
Valentino(S, K, M) = KS mod M
对于一个字串对应的进制 P,现作出如下规定:
S = “12445”,你应该将它视为一个 6 进制数:124456 = 190110 。
S = “c0ab5h”,你应该将它视为一个 18 进制数:c0ab5h18 = 2273680710 。
即,对于一个由数字和小写字母组成的字符串 S,将’a’视为 10,’b’视为 11,...,’z’视为 35,你应该找到最小的 P,使得 S 是一个合法的 P 进制数。
现在,Valentino 手上有若干个由数字和小写字母组成的字符串。他选定了两个数 K,M,想求出每个字符串的 Valentino 函数的十进制表示。但是由于字符串实在太长了,Valentino 实在算不过来,所以他只好求助于你。Input
第 1 行为两个正整数 K, M。
接下来每行一个由数字和小写字母组成的字符串,代表你要处理的字符串。Output
每行一个整数,第 i 行输出第 i 个字符串的 Valentino 函数值,以十进制表示。
正解:
我觉得solution讲得超级清楚啊(图点开看还是挺清楚的)
但是要补充解释一个地方:x的含义是 kpi,pi是p的i次方
CODE:
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#define R register
#define go(i,a,b) for(R int i=a;i<=b;i++)
#define yes(i,a,b) for(R int i=a;i>=b;i--)
#define M 100000+1
#define ll long long
using namespace std;
ll k,m,n,x,len,a[M],as;
string s;
ll ksm(ll x,ll y)
{
ll ans=;
while(y)
{
if(y&) ans=ans*x%m;
x=x*x%m;y>>=;
}
return ans%m;
}
int main()
{
scanf("%lld%lld",&k,&m);
while(cin>>s)
{
len=s.length()-;n=;as=;x=k;
go(i,,len)
{
if(s[i]>=''&&s[i]<='') a[i]=s[i]-'';
else a[i]=s[i]-'a'+;
n=max(n,a[i]);
}n+=;
yes(i,len,)
{
as=as*ksm(x,a[i])%m;
x=ksm(x,n);
}
printf("%lld\n",as);
}
return ;
}
字符加密 cipher的更多相关文章
- BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组
1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6014 Solved: 2503[Submit ...
- 【BZOJ-1031】字符加密Cipher 后缀数组
1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5504 Solved: 2277[Submit ...
- 【BZOJ】【1031】【JSOI2007】字符加密Cipher
后缀数组 当年感觉好神的题现在好像变水了…… 题意其实有点蛋疼……一开始没看懂<_< 将原串复制一遍接在后面,用后缀数组求一下SA,那么SA<n的就是所找到的那n个字符串,然后把它们 ...
- bzoj 1031: [JSOI2007]字符加密Cipher 後綴數組模板題
1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3157 Solved: 1233[Submit ...
- 【BZOJ1031】[JSOI2007]字符加密Cipher 后缀数组
[BZOJ1031][JSOI2007]字符加密Cipher Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的 ...
- 1031: [JSOI2007]字符加密Cipher
1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7338 Solved: 3182[Submit ...
- BZOJ 1031 [JSOI2007]字符加密Cipher 后缀数组教程
1031: [JSOI2007]字符加密Cipher Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一 ...
- BZOJ 1031 [JSOI2007]字符加密Cipher | 后缀数组模板题
BZOJ 1031 [JSOI2007]字符加密Cipher | 后缀数组模板题 将字符串复制一遍接在原串后面,然后后缀排序即可. #include <cmath> #include &l ...
- [JSOI2007]字符加密Cipher
bzoj 1031:[JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MB Description 喜欢钻研问题的JS同学,最近又迷 ...
- [JSOI2007]字符加密Cipher SA
[JSOI2007]字符加密Cipher Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 7859 Solved: 3410[Submit][Stat ...
随机推荐
- mysql EXPLAIN 参数表
测试样式: 参数详情:
- Thread的start和run的区别
最近看到一个题目,代码如下: public static void main(String args[]) { Thread t = new Thread() { public void run() ...
- Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt
Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...
- Java继承,重写方法时改变方法的访问权限
java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...
- todomvc-app
1.HTML <!doctype html> <html lang="en"> <head> <meta charset="ut ...
- springmvc+mybatis 处理时间
项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...
- Mac突然连不上WiFi
标签(空格分隔): 杂七杂八的问题 从昨晚开始,Mac突然连不上WiFi了,人又在图书馆,上不了网好焦急.于是搜了很多方法,也不知是哪个起作用了,反正现在可以了. 步骤一 打开"Finder ...
- Beta 反(tu)思(cao) && 获小黄衫感言
写在前面 终于要结束了...我的心情就像走在沙漠中的人看到了一片绿洲一样,身体很疲惫,心情是自由自在~ 这是一篇总结反思的博客 (为了附加分),顺便把早该写的获小黄衫感言一起发了. Beta 反思 做 ...
- Active Directory PowerShell模块收集AD信息
0x00 前言简介 Microsoft为Windows Server 2008 R2(以及更高版本)提供了多个Active Directory PowerShell cmdlet,这大大简化了以前需要 ...
- 响应式开发(五)-----Bootstrap CSS----------Bootstrap 网格系统
如果我们看过一些bootstrap的框架,经常看到col-sm-3等样式class. Bootstrap 提供了一套响应式.移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系 ...
