帕秋莉·诺蕾姬 (Standard IO)
来源:互联网 发布:淘宝买恒压阀 编辑:程序博客网 时间:2024/06/01 22:42
Description
在幻想乡,帕秋莉·诺蕾姬是以宅在图书馆闻名的魔法使。这一天帕秋莉又在考虑如何加强魔法咒语的威力。帕秋莉的魔法咒语是一个仅有大写字母组成的字符串,我们考虑从’A’到’Z’分别表示0到25的数字,于是这个魔法咒语就可以看作一个26进制数。帕秋莉通过研究发现,如果一个魔法咒语所代表的数能够整除10进制数M的话,就能够发挥最大的威力。若当前的魔法咒语并不能整除M,帕秋莉只会将其中两个字符的位置交换,尽量让它能够被M整除,当然由于某些咒语比较特殊,无论怎么改变都不能达到这个目的。请你计算出她能否只交换两个字符就让当前咒语被M整除。(首位的’A’为前导0)
Input
第1行:1个字符串,长度不超过L。
第2行:1个正整数,M
Output
第1行:用空格隔开的2个整数,输出时先输位置靠前的那个。
如果存在多种交换方法,输出字典序最小的,比如1 3和1 5都可以达到目的,就输出1 3;1 3和2 4都行时也输出1 3。注意字符串下标从左到右依次为1到L开始。如果初始魔法咒语已经能够整除M,输出”0 0”;若无论如何也不能到达目的输出”-1 -1”。
题解
先预处理出26的0至2000的次方,因为题目问是否能整除M,所以可以在预处理时mod M。然后暴力每一种交换情况,即可。
代码
var s:ansistring; l,n:longint; a,f:array [0..2001] of longint;procedure init;var i,j,t:longint;begin readln(s); readln(n); l:=length(s); a[0]:=1; for i:=1 to 1999 do a[i]:=(a[i-1]*26) mod n; for i:=1 to l do begin f[i]:=((ord(s[i])-65)*a[l-i]) mod n; f[0]:=(f[0]+f[i]) mod n; end; if f[0]=0 then begin write('0 0'); halt; end;end;procedure main;var i,j,t,x,y:longint;begin for i:=1 to l-1 do begin x:=ord(s[i])-65; for j:=i+1 to l do begin y:=ord(s[j])-65; t:=((x-y)*a[l-j]+(y-x)*a[l-i]) mod n; if (f[0]+t) mod n=0 then begin write(i,' ',j); halt; end; end; end;end;begin init; main; write('-1 -1');end.
1 0
- 帕秋莉·诺蕾姬 (Standard IO)
- 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬 (Standard IO)
- 2554. 【NOIP2011模拟9.7】帕秋莉·诺蕾姬 (Standard IO)
- Window (Standard IO)
- Party (Standard IO)
- 1326. Window (Standard IO)
- 遥控车 (Standard IO)
- Mobile Service (Standard IO)
- 舞台设置 (Standard IO)
- 拉力赛 (Standard IO)
- 车展 (Standard IO)
- 1328. Party (Standard IO)
- 三条线 (Standard IO)
- 绕圈跑 (Standard IO)
- 餐桌 (Standard IO)
- 直角三角形 (Standard IO)
- 佳肴 (Standard IO)
- 删除 (Standard IO)
- hdu 1242 bfs+priority_queue
- C# 获取文本文件的编码,自动区分GB2312和UTF8
- 解析ButterKnife实现原理
- Jquery李炎恢——23,24,25动画效果
- Windows下基于mingw的mex开发
- 帕秋莉·诺蕾姬 (Standard IO)
- C语言知识点2
- 【HDU 1325 Is It A Tree?】
- Water and Jug Problem
- 求两个子数组最大的累加和
- 【转】Java SwingWorker(三)
- 【NOIP2016提高A组模拟8.14】疯狂的火神
- Eclipse中使用google代码风格formatter
- C语言知识点3