fbpx

Problema #555 – Overflow – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Lui Gigel i s-a cerut să scrie un program care realizează înmulțirea dintre două numere naturale. Pentru a-i da o provocare lui Gigel, profesorul îi dă ca date de intrare un set de perechi de numere naturale pentru care produsul poate depăși 2 64. Gigel trebuie acum să-și modifice programul pentru ca să poată detecta cazurile speciale.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale, care trebuie înmulțite.

Date de ieșire

Programul va afișa pe ecran rezultatele pentru cele n operații, fiecare pe câte o linie. Rezultatul operației este produsul celor două numere, dacă acesta se poate reprezenta pe 8 octeți fără semn, sau mesajul Overflow!, în caz contrar.

Restricții și precizări

  • 1 ≤ n ≤ 100.000
  • pentru fiecare pereche, cele două numere se pot reprezenta pe 8 octeți, fără semn
  • valorile care se pot reprezenta pe 8 octeți fără semn sunt cuprinse între 0 și 18.446.744.073.709.551.615

Exemplu

Intrare

3
2147483647 2147483647
18446744073709551615 2
666013 1

Ieșire

4611686014132420609
Overflow!
666013
#include <bits/stdc++.h>
using namespace std;
int main()
{
    unsigned long long n,i,nr1,nr2;
    cin>>n;
    for(i=0;i<n;i++)
    {
        cin>>nr1>>nr2;
        if(nr2&&nr1>18446744073709551615ULL/nr2)
            cout<<"Overflow!"<<'\n';
        else
            cout<<nr1*nr2<<'\n';
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa