RoAlgo Contest #4 (avansati) | gadfadar5

This was the problem page during the contest. Access the current page here.
Time limit: 0.75s
Memory limit: 256MB
Input:
Output:

Băi băiatule, mai ai două vieți

Don-ul iubește șirurile corect parantezate, prietenul tău Raul iubește secvențele, iar tu iubești teoria numerelor. Don-ul te-a rugat să scrii o problemă care să satisfacă calitatea problemelor concursului RoAlgo și să îi dai o soluție la această problemă. Ai decis să combini teoria numerelor, șirurile corect parantezate și secvențele într-o singură problemă.

Un șir se numește corect parantezat dacă și numai dacă se pot introduce caracterele ++ și 11 astfel încât șirul obținut să reprezinte o expresie matematică corectă. De exemplu (())(()) și ()(())()(()) sunt șiruri corect parantezate deoarece (1+(1+1))(1+(1+1)) și (1+1)+(1+(1+1))(1+1)+(1+(1+1)) sunt o expresii matematice corecte, dar (()(() și ())(()())(() nu sunt șiruri corect parantezate.

Cerință

Tu ai scris numărul nn și un șir SS de caractere aparținând mulțimii {(,)}\{ \texttt{(}, \texttt{)} \} de lungime nn.

Află i=1nj=ingcd(i,j)rbs(i,j)\displaystyle{\sum_{i=1}^{n} \sum_{j=i}^{n} gcd(i, j) \cdot rbs(i, j)}

Date de intrare

Pe prima linie va conține un singur numărul natural reprezentând numărul nn.

Pe a doua linie se află un șir de nn caractere reprezentând șirul SS.

Date de ieșire

Se afișează un singur număr natural reprezentând răspunsul la cerință

Restricții și precizări

  • 1n200 0001 \leq n \leq 200 \ 000
  • gcd(i,j)gcd(i, j) este cel mai mare divizor comun al numerelor ii și jj.
  • rbs(i,j)rbs(i, j) este 11 dacă subsecvența si si+1  sjs_i \ s_{i+1} \ \dots \ s_j este corect parantezată, altfel este 00
# Punctaj Restricții
1 6 1n3001 \leq n \leq 300
2 11 300<n3 000300 < n \leq 3 \ 000
3 65 3 000<n50 0003 \ 000 < n \leq 50 \ 000
4 18 Fără alte restricții

Exemplu

stdin

10
()()((()))

stdout

14

Explicație

Subsecvențele cu gcd(i,j)=1gcd(i, j) = 1 sunt:

  1. (1,2)(1, 2)
  2. (1,4)(1, 4)
  3. (1,10)(1, 10)
  4. (3,4)(3, 4)
  5. (3,10)(3, 10)
  6. (7,8)(7, 8)

Subsecvența cu gcd(i,j)=3gcd(i, j) = 3 este:

  1. (6,9)(6, 9)

Subsecvența cu gcd(i,j)=5gcd(i, j) = 5 este:

  1. (5,10)(5, 10)

61+13+15=146 \cdot 1 + 1 \cdot 3 + 1 \cdot 5 = 14

Deci răspunsul este 1414.

Contest info

Official contest

Start time: 1692432000000

Total duration: 4h0m0s

Status: Ended

Log in or sign up to be able to send submissions!