Am nevoie de o rezolvare pt aceasta problema.
Multumesc anticipat!
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
Răspunsuri la întrebare
Răspuns de
8
#include <iostream>
using namespace std;
unsigned long long nr1,nr2;
int n;
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
{
cin >> nr1 >> nr2;
if(nr2 and nr1>18446744073709551615ULL/nr2)
cout << "Overflow!"<< endl;
else
cout << nr1*nr2 << endl;
}
return 0;
}
using namespace std;
unsigned long long nr1,nr2;
int n;
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
{
cin >> nr1 >> nr2;
if(nr2 and nr1>18446744073709551615ULL/nr2)
cout << "Overflow!"<< endl;
else
cout << nr1*nr2 << endl;
}
return 0;
}
info2002:
Am incercat si eu varianta asta dar da eroare de compilare...Dar, mersi oricum:)))
Răspuns de
6
#include <iostream>
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;
}
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;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă