Nu aveti permisiuni pentru a descarca fisierul grader_test1.ok
Diferente pentru jc2023/solutii/jupanul intre reviziile #13 si #7
Nu exista diferente intre titluri.
Diferente intre continut:
h1. 'Soluţia':jc2023/solutii/jupanulproblemei 'Salutare Jupâne':problema/jupanul
h1. 'Solutia':jc2023/solutii/omida problemei 'Salutare Jupane':problema/jupanul
Vomîncerca sătratăm suma independent pe fiecare prefix al descompunerii. Astfel,vom fixa prefixul de lungime $t$şi vom calcula suma din gcd(a{1},a{2},...,a{t}) pentru toate descompunerile lui $n$.
Vom incerca sa tratam suma independent pe fiecare prefix al descompunerii. Astfel vom fixa prefixul de lungime $t$ si vom calcula suma din gcd(a{~1~},a{~2~},...,a{~t~}) pentru toate descompunerile lui $n$.
h2. Solutie in $O(m·nrdiv·log)$
Este cunoscut căsuma din $phi(i)$ pentru toţi divizorii lui $n$ este chiar $n$, unde $phi(i)$ reprezintănumărul de numere prime cu $i$ mai mici decât $i$. Astfel,în loc săcalculăm suma din gcd, vom calcula suma din $phi(x)$ cu $x | gcd$.
Este cunoscut ca suma din $phi(i)$ pentru toti divizorii lui $n$ este chiar $n$, unde $phi(i)$ reprezinta numarul de numere prime cu $i$ mai mici decat $i$. Astfel in loc sa calculam suma din gcd, vom calcula suma din $phi(x)$ cu $x | gcd$.
Săfixăm $x$şi sănumărăm câte descompuneri ale lui $n$ au $k$ termenişi prefixul de lungime $t$ are gcd-ul multiplu de $x$. Singura condiţie impusăeste căprimii $t$ termeni din descompunere săfie multipli de $x$, deci trebuie sănumărăm descompunerile lui $n/x^t$în $k$ termeni, lucru care poate fi făcut cu uşurinţăconsiderând fiecare factor prim independentşiînmulţind răspunsurile. Dacăun factor prim are exponent $e$, atunci avem nevoie de numărul de soluţii ale $b{1} + b{2} + ... + b{k} = e$, deci vom folosi "stars and bars":https://cp-algorithms.com/combinatorics/stars_and_bars.html.
Sa fixam $x$, si sa numaram cate descompuneri ale lui $n$ au $k$ termeni si prefixul de lungime $t$ are gcdul multiplu de $x$. Singura conditie inpusa este ca primii $t$ termeni din descompunere sa fie multipli de $x$, deci trebuie sa numaram descompunerile lui $n/x^t^$ in $k$ termeni, lucru care poate fi facut cu usurinta considerand fiecare factor prim independent si inmultind raspunsurile. Daca un factor prim are exponent $e$, atunci avem nevoie de numarul de solutii ale $b{~1~} + b{~2~} + ... + b{~k~} = e$, deci vom folosi "stars and bars":https://cp-algorithms.com/combinatorics/stars_and_bars.html.
Pentru a obţine complexitatea din subtitlu, folosim memoizare pentru a nu calcula descompunerile de mai multe ori decât este necesarşi observăm căpentru orice $x > 1$, acesta poate contribui doarîn $log$ prefixe.
Pentru a obtine complexitatea din subtitlu, folosim memoizare pentru a nu calcula descompunerile de mai multe ori decat este necesar si observam ca pentru orice $x > 1$, acesta poate contribui doar in $log$ prefixe.
h2. Solutie in $O(m·log^2^)$
Vom schimba modulîn care calculăm răspunsul pentru un prefix. Săpresupunem că$n=p{~1~}^e{~1~}^·p{~2~}^e{~2~}^·...·p{~l~}^e{~l~}^$. Vom folosi $dp[i] = suma tuturor gcd-urilor considerând doar primii i factori primi$. Observăm că$dp[i] = dp[i-1]·(suma tuturor gcd-urilor când considerăm doar factorul prim curent)$,întrucât orice $gcd$ care poate fi obţinut doar cu factorul prim curent poate fi cuplat cu orice $gcd$ vechi, deciîn final doarînmulţim răspunsurile pentru fiecare factor prim separat. Acum putem folosi soluţia de dinainte, doar cănu mai trebuie săconsiderăm toţi divizorii, ci doar cei care sunt puteri ale unui număr prim,în total $log$ astfel de numere.
Vom schimba modul in care calculam raspunsul pentru un prefix. Sa presupunem ca $n=p{~1~}^e{~1~}^·p{~2~}^e{~2~}^·...·p{~l~}^e{~l~}^$. Vom folosi $dp[i] = suma tututor gcdurilor considerand doar primii i factori primi$. Observam ca $dp[i] = dp[i-1]·(suma tuturor gcdurilor cand consideram doar factorul prim curent)$, intrucat orice $gcd$ care poate fi obtinut doar cu factorul prim curent poate fi cuplat cu orice $gcd$ vechi, deci in final doar inmultim raspunsurile pentru fiecare factor prim separat. Acum putem folosi solutia de dinainte, doar ca nu mai trebuie sa consideram toti divizorii, ci doar cei care sunt puteri ale unui numar prim, in total $log$ astfel de numere.
