Module: Hashes


Problem

2 /2


HASH

Theory Click to read/hide

Mencincang rentetan ialah perwakilan rentetan sebagai beberapa nombor, unik (kami akan menganggap bahawa peluang perlanggaran adalah diabaikan) untuk setiap rentetan. Ini membolehkan anda menyimpan sebarang data penting (seperti kata laluan) dalam pangkalan data bukan sebagai rentetan, tetapi sebagai nombor. Ini membolehkan anda melindungi kata laluan jika penyerang mendapat akses kepada pangkalan data kata laluan, kerana dia tidak akan mendapat kata laluan itu sendiri, tetapi hanya perwakilan berangkanya, dan hampir mustahil untuk mendapatkan rentetan melalui hashnya (terutamanya tanpa mengetahui algoritma pencincangan ). 
Cincangan polinomial paling kerap digunakan dalam masalah persaingan pengaturcaraan.
Salah satu cara terbaik untuk menentukan fungsi cincang rentetan S adalah seperti berikut:
h(S)  =  S[0]  +  S[1] * P  +  S[2] * P^2  +  S[3] * P^3  +  ...  +  S[N] * P^N

Problem

Programmer Vasya tidak bernasib baik - bukannya bercuti, dia dihantar dalam perjalanan perniagaan ke persidangan saintifik. "Kita perlu meningkatkan tahap pengetahuan," kata bos, "Satu persidangan penting mengenai kriptografi sedang diadakan di Perancis - dan di sana mereka menyulitkan kembali pada zaman Richelieu dan memecahkan sifir orang lain pada zaman Vieta."
Vasya dengan cepat mengetahui bahawa dia telah melihat semua lukisan Louvre di suatu tempat, pemandangan Menara Eiffel menjadi membosankan baginya walaupun sebelum tetikus mengelapnya dari permaidani, dan kami membuat piramid kaca sedemikian untuk semua jenis kiosk dan kedai makan yang meragukan. Pendek kata, tiada apa yang dapat dilihat di Paris, tiada tempat untuk memancing, jadi Vasya terpaksa menghadiri laporan di persidangan itu.
Salah seorang penceramah, sekali lagi cuba membongkar sifir Bacon, mengemukakan hipotesis bahawa kunci kepada misteri Bacon boleh ditemui dengan menganalisis semua kemungkinan subrentetan karya Bacon. "Tetapi terdapat terlalu ramai daripada mereka!" Vasya terkejut kuat. "Tidak, tidak begitu!" - jerit pembesar suara, - "Kira, dan anda akan lihat sendiri!"
Pada petang yang sama, Vasya menemui karya lengkap Bacon di Internet. Dia menulis program yang menukar teks menjadi satu baris panjang, mengalih keluar semua ruang dan tanda baca daripada teks. Dan kini Vasya sangat hairan - bagaimana untuk mengira bilangan subrentetan berbeza rentetan ini? 

Input
Input mengandungi rentetan bukan kosong yang diterima oleh Vasya. Rentetan hanya terdiri daripada aksara Latin huruf kecil. Panjangnya tidak melebihi 2000 aksara. 

Output
Cetak bilangan subrentetan berbeza rentetan ini.

 

Contoh
# Input Output
1 aaba 8