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 între0
și18.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; }