Rezolvare completă PbInfo #2404 Test

Cerința

Exact așa cum spuneam Alex e un băiat năzdrăvan! De data aceasta boacăna pe care a făcut-o l-a determinat pe profesorul de informatică să îi spună că nu va mai fi iertat și pentru această boacănă așa că îi dă de ales ori îl va asculta doar pe el și restul copiilor vor scăpa ori va dă test tuturor din clasă. Alex este conștient că nu trebuie să fie pedepsiți toți pentru greșeala lui așa ca decide ca doar el trebuie să răspundă! Profesorul complet degajat îi da problema:

Se dau două șiruri de câte n valori notate A și B. Pentru fiecare pereche \( A_i B_i \) se calculează resturile împărțirii la 6669666 a lui \( {A_i}^{B_i} \). Ajutați-l pe Alex să determine suma acestor resturi.

Date de intrare

Fișierul de intrare test.in conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații reprezentând elementele șirului A și apoi pe următoarea linie n numere naturale reprezentând elementele șirului B.

Date de ieșire

Fișierul de ieșire test.out va conține pe prima linie numărul S, reprezentând rezultatul suma cerută.

Restricții și precizări

  • 1 ≤ n ≤ 1000
  • numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 4.294.967.296
  • desigur că dacă îl veți ajuta Alex vă va răsplăti cu o bere sau cu un suc în funcție de vârstă

Exemplu

test.in

5
2 3 4 5 6
1 2 3 4 5

test.out

8476

Explicație

S-a calculat 21+32+43+54+65=8476.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Test:

#include <fstream>
#define mod 6669666
#define Maxx 1001
using namespace std;
ifstream fin("test.in");
ofstream fout("test.out");
unsigned long long A[Maxx],B[Maxx],i,ans,rez,n;
int main()
{
    fin>>n;
    for (i=1;i<=n;i++)
        fin>>A[i],A[i]%=mod;
    for (i=1;i<=n;i++)
        fin>>B[i];
    for (i=1;i<=n;i++)
    {
        ans=1;
        while (B[i]!=0)
        {
            if (B[i]%2==0)
            {
                A[i]=A[i]*A[i]%mod;
                B[i]/=2;
            }
            else
            {
                ans=(ans*A[i])%mod;
                A[i]=A[i]*A[i]%mod;
                B[i]/=2;
            }
        }
        rez+=ans;
    }
    fout<<rez;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2404 Test

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2404 Test de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!