评测传送门

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的更多相关文章

  1. BZOJ 1031: [JSOI2007]字符加密Cipher 后缀数组

    1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 6014  Solved: 2503[Submit ...

  2. 【BZOJ-1031】字符加密Cipher 后缀数组

    1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5504  Solved: 2277[Submit ...

  3. 【BZOJ】【1031】【JSOI2007】字符加密Cipher

    后缀数组 当年感觉好神的题现在好像变水了…… 题意其实有点蛋疼……一开始没看懂<_< 将原串复制一遍接在后面,用后缀数组求一下SA,那么SA<n的就是所找到的那n个字符串,然后把它们 ...

  4. bzoj 1031: [JSOI2007]字符加密Cipher 後綴數組模板題

    1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3157  Solved: 1233[Submit ...

  5. 【BZOJ1031】[JSOI2007]字符加密Cipher 后缀数组

    [BZOJ1031][JSOI2007]字符加密Cipher Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法 :把需要加密的 ...

  6. 1031: [JSOI2007]字符加密Cipher

    1031: [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7338  Solved: 3182[Submit ...

  7. BZOJ 1031 [JSOI2007]字符加密Cipher 后缀数组教程

    1031: [JSOI2007]字符加密Cipher Description 喜欢钻研问题的JS同学,最近又迷上了对加密方法的思考.一天,他突然想出了一种他认为是终极的加密办法:把需要加密的信息排成一 ...

  8. BZOJ 1031 [JSOI2007]字符加密Cipher | 后缀数组模板题

    BZOJ 1031 [JSOI2007]字符加密Cipher | 后缀数组模板题 将字符串复制一遍接在原串后面,然后后缀排序即可. #include <cmath> #include &l ...

  9. [JSOI2007]字符加密Cipher

    bzoj 1031:[JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MB Description 喜欢钻研问题的JS同学,最近又迷 ...

  10. [JSOI2007]字符加密Cipher SA

    [JSOI2007]字符加密Cipher Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 7859  Solved: 3410[Submit][Stat ...

随机推荐

  1. mysql EXPLAIN 参数表

    测试样式: 参数详情:

  2. Thread的start和run的区别

    最近看到一个题目,代码如下: public static void main(String args[]) { Thread t = new Thread() { public void run() ...

  3. Java并发编程之线程生命周期、守护线程、优先级、关闭和join、sleep、yield、interrupt

    Java并发编程中,其中一个难点是对线程生命周期的理解,和多种线程控制方法.线程沟通方法的灵活运用.这些方法和概念之间彼此联系紧密,共同构成了Java并发编程基石之一. Java线程的生命周期 Jav ...

  4. Java继承,重写方法时改变方法的访问权限

    java中的方法天生具有继承多态特性,这点与C++有很大不同(需要在父类方发上加virtual关键字),但用起来确实方便了许多. 最简单的继承多态 声明一个接口BaseIF,只包含一个方法声明 pub ...

  5. todomvc-app

    1.HTML <!doctype html> <html lang="en"> <head> <meta charset="ut ...

  6. springmvc+mybatis 处理时间

    项目结构: 一.数据库中time的字段为datetime1. 数据库设计如图 2. addNews.jsp <%@ page language="java" contentT ...

  7. Mac突然连不上WiFi

    标签(空格分隔): 杂七杂八的问题 从昨晚开始,Mac突然连不上WiFi了,人又在图书馆,上不了网好焦急.于是搜了很多方法,也不知是哪个起作用了,反正现在可以了. 步骤一 打开"Finder ...

  8. Beta 反(tu)思(cao) && 获小黄衫感言

    写在前面 终于要结束了...我的心情就像走在沙漠中的人看到了一片绿洲一样,身体很疲惫,心情是自由自在~ 这是一篇总结反思的博客 (为了附加分),顺便把早该写的获小黄衫感言一起发了. Beta 反思 做 ...

  9. Active Directory PowerShell模块收集AD信息

    0x00 前言简介 Microsoft为Windows Server 2008 R2(以及更高版本)提供了多个Active Directory PowerShell cmdlet,这大大简化了以前需要 ...

  10. 响应式开发(五)-----Bootstrap CSS----------Bootstrap 网格系统

    如果我们看过一些bootstrap的框架,经常看到col-sm-3等样式class. Bootstrap 提供了一套响应式.移动设备优先的流式网格系统,随着屏幕或视口(viewport)尺寸的增加,系 ...