Palindroomide vastulöök | 프로그래밍의 벗 PivotOJ
PivotOJ

Palindroomide vastulöök

시간 제한: 2000ms메모리 제한: 1024MB출처: EIO 2016-17 sel1BOJ 7164

문제

Palindroomid on programmeerimisvõistlustel läbi aegade korduv teema, kuid enamasti on nendega seotud ülesanded olnud küllaltki lihtsad ja palindroomid tunnevad end sellepärast halvasti. Seetõttu otsustati Palindroomide Maailmakongressil, et palindroomide jõud tuleb ühendada ning võistlusprogrammeerijatele koht kätte näidata.

Palindroomid on kavalad ja peidavad ennast sageli sõnedesse ära. Sõne sisse peitmine tähendab, et kui me kustutame sõnest mingi hulga märke ja alles jäänud märgid moodustavad palindroomi, siis oligi see palindroom sõnes peidus. Näiteks sõnes 'banaan' peidavad end palindroomid 'aaa', 'naan', 'nan', 'b' j.n.e.

Sõne igal märgil on palindroomiline jõud. See jõud võrdub märgi järjenumbri (alustame loendamist ühest) ja sellel märgil end peitvate palindroomide arvu korrutisega. Näiteks sõne 'aaba' nelja märgi palindroomiline jõud on vastavalt 15=51 \cdot 5 = 5, 25=102 \cdot 5 = 10, 33=93 \cdot 3 = 9 ja 46=244 \cdot 6 = 24. Selgitus, miks esimese märgi palindroomiline jõud on 55: sõnest erinevaid märgikombinatsioone kustutades saame 8 võimalust, mis sisaldavad selle esimest märki, neist omakorda 5 tükki on palindroomid (märgitud tärniga): 'a...'*, 'a..a'*, 'a.b.', 'a.ba'*, 'aa..'*, 'aa.a'*, 'aab.', 'aaba'.

Jõudude ühendamise all pidasid palindroomid silmas, et nad panevad kõik oma bitid kokku ja on siis ülitugevad. Palindroomid ei arvestanud aga kahe asjaoluga.

Esiteks piirab nende jõudu programmeerimisvõistluste loodusseadus nimega Maagiline Moodul. Nagu kõik teavad, on Maagilise Mooduli väärtuseks 10000000071\,000\,000\,007. Sõne iga koha palindroomilise jõu leidmisel tuleb tegelikult leida esialgse jõu jääk Maagilise Mooduliga jagades.

Teiseks annihileeruvad jõudude bitid omavahel, mistõttu ei saa nad kokku mitte jõudude summa, vaid XOR\text{XOR}-tehte tulemuse. Sõne kõigi märkide palindroomiliste jõudude XOR\text{XOR}i tulemust nimetatakse sõne palindroomiliseks jõuks.

입력

Tekstifaili esimesel real on sõne pikkus NN (1N30001 \le N \le 3\,000) ja teisel real NN väikesest ladina tähest ('a'\ldots'z') koosnev sõne.

출력

Tekstifaili ainsale reale väljastada sisendis antud sõne palindroomiline jõud.

예제

예제 1

입력
4
aaba
출력
30

예제 2

입력
4
abcd
출력
4

예제 3

입력
5
tcoct
출력
60

예제 4

입력
62
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
출력
1025495382
코드를 제출하려면 로그인하세요.