帕秋莉 諾蕾姬

2021-07-16 16:01:28 字數 2204 閱讀 8247

description

在幻想鄉,帕秋莉

·諾蕾姬是以宅在圖書館聞名的魔法使。這一天帕秋莉又在考慮如何加強魔法咒語的威力。帕秋莉的魔法咒語是乙個僅有大寫字母組成的字串,我們考慮從

』a』到

』z』分別表示0到

25的數字,於是這個魔法咒語就可以看作乙個

26進製數。帕秋莉通過研究發現,如果乙個魔法咒語所代表的數能夠整除

10進製數

m的話,就能夠發揮最大的威力。若當前的魔法咒語並不能整除

m,帕秋莉只會將其中兩個字元的位置交換,盡量讓它能夠被

m整除,當然由於某些咒語比較特殊,無論怎麼改變都不能達到這個目的。請你計算出她能否只交換兩個字元就讓當前咒語被

m整除。

(首位的

』a』為前導

0)input

1行:1個字串,長度不超過l。

第2行:1

個正整數,

moutput

1行:用空格隔開的

2個整數,輸出時先輸位置靠前的那個。

如果存在多種交換方法,輸出字典序最小的,比如

1 3和

1 5都可以達到目的,就輸出

1 3;

1 3和

2 4都行時也輸出

1 3。注意字串下標從左到右依次為1到

l開始。如果初始魔法咒語已經能夠整除

m,輸出

」0 0」

;若無論如何也不能到達目的輸出

」-1 -1」

sample input

patchouli

16sample output

4 9dataconstraint

hint

【資料範圍】

對於30%

的資料:

1 <= l <= 10, 1 <= m <= 100

對於50%

的資料:除前面

30%外,

1 <= l <= 500, m = 5或25

或26對於100%

的資料:

1 <= l<= 2,000, 1 <= m <= 200,000

分析:首先預處理出26的0~l次方,然後求出這個26進製數的10進製值(要取模)。然後我們列舉更換的二個位置,然後交換。它的大小變化為

(a[j]-a[i])*26^(l-i)+(a[i]-a[j])*26^(l-j)

當它的值與本來的值和取模後為0即為解。

程式:

var

s:ansistring;

m,l,t,x:int64;

power,a:array [1..1001] of int64;

i,j:longint;

begin

readln(s);

readln(m);

l:=length(s);

a[l]:=ord(s[l])-65;

power[l]:=1;

t:=a[l];

for i:=l-1

downto1do

begin

a[i]:=ord(s[i])-65;

power[i]:=(power[i+1]*26) mod m;

t:=(t+a[i]*power[i]) mod m;

end;

if t=0

then

begin

writeln('0 0');

exit;

end;

for i:=1

to l-1

dofor j:=i+1

to l do

begin

x:=((a[j]-a[i])*power[i]+(a[i]-a[j])*power[j]) mod m;

if (t+x) mod m=0

then

begin

writeln(i,' ',j);

exit;

end;

end;

writeln('-1 -1');

end.

Luogu P4910 帕秋莉的手環

帕秋莉是蕾公尺莉亞很早結識的朋友,現在住在紅魔館地下的大圖書館裡。不僅擅長許多魔法,還每天都會開發出新的魔法。只是身體比較弱,因為哮喘,會在詠唱符卡時遇到麻煩。她所用的屬性魔法,主要是生命和覺醒的 木 變化和活動的 火 基礎和不動的 土 果實和豐收的 金 寂靜和淨化的 水 機動和攻擊的 日 被動和防...

洛谷P4915 帕秋莉的魔導書

帕秋莉有乙個巨大的圖書館,裡面有數以萬計的書,其中大部分為魔導書。魔導書是一種需要鑰匙才能看得懂的書,然而只有和書寫者同等或更高熟練度的人才能看得見鑰匙。因此,每本魔導書都有它自己的等級 a i 同時它也有自己的知識程度為 w i 現在我們想要知道,乙個等級為 b i 的生物 可以從這些魔導書中得到...

洛谷 P4910 帕秋莉的手環 矩陣乘法

傳送門 帕秋莉有乙個手環,有兩種珠子可以組成手環,乙個為金屬性,乙個為木屬性,當與金珠子相鄰的珠子都會發出金色 現在問我們有多少種方案能使得整個手環呈現金色 我們先手玩一般情況下我們的放置方案可行的個數 n1 2345 金123 58木1 1235 不難看出這便是斐波那契數列 但因為這乙個環,所以我...