• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Algorytm - Mnożenia dużych liczb

Object Storage Arubacloud
0 głosów
606 wizyt
pytanie zadane 7 marca 2019 w C i C++ przez patrykos28 Nowicjusz (120 p.)

Ostatnio robiłem sobie zadania algorytmiczne i po jego wykonaniu "sędzia" wywalał że testy nie przeszły kombinowałem i nwm w czym problem dlatego pomyślałem, że może ktoś doświadczony wskaże błąd

Oto treść:

ZADANIE

Pomnóż dwie duże liczby.

Wejście

W pierwszej linii znajduje się liczba całkowita - liczba przypadków testowych. W każdym i-tym z kolejnych t wierszy znajdują się dwie liczby całkowite ai, bi - liczby do pomnożenia.

Wyjście

Dla każdego testu wypisz w i-tej linii iloczyn liczb ai, bi.

Przykład

Dla danych wejściowych:

2

12 7

13 4

poprawną odpowiedzią jest:

84

52

#include <iostream>
#include <iomanip>


using namespace std;

 int t;

 int main()
 {

 cin>>t;

  double a[t],b[t];

 for (int i=0;i<=t-1;i++)
 {

     cin>>a[i]>>b[i];

 }

 for(int i=0;i<=t-1;i++)
 {

 cout<<setprecision(50);
     cout<<endl<<a[i]*b[i];
 }

   return 0;

 }

OGRANICZENIA

1 ≤ t ≤ 103

0 ≤ a1, b1, a2, b2, ..., at, bt ≤ 4*109

1 odpowiedź

+1 głos
odpowiedź 8 marca 2019 przez jankustosz1 Nałogowiec (35,880 p.)
1) double a[t],b[t]; takie coś możesz robić tylko jak t jest const, w innym przypadku użyj dynamicznego alokowania lub wektora

2) Nie potrzebujesz wogóle tablicy bo możesz na bieżąco wypisywać wyniki dla każdej pary

3) Nie potrzebujesz setprecision bo nie masz ułamka. W dodatku 50 to za dużo i wychodzi poza zakres doubla

4) Pierwsze wypisuj wynik a potem nową linię

5) obstawiam, że chodzi o co innego i limit to nie 4*109 a 4*10^9, wtedy musisz zrobić mnożenie pisemne
komentarz 8 marca 2019 przez patrykos28 Nowicjusz (120 p.)
2.próbowałem bez tablicy w code blocks działało tak samo ale testy nadal nie przechodziły.

3.te 50 w setprecision to tak zeby zobaczyć liczbę całą dałem

5. tak chodzi o 4*10^9 ale nie zróciłem uwagi przy kopiowaniu
komentarz 8 marca 2019 przez patrykos28 Nowicjusz (120 p.)

Tak wyglądał kod bez tablic

#include <iostream>


using namespace std;

 double t,a,b;

 int main()
 {

 cin>>t;

 for (int i=1;i<=t;i++)
 {

     cin>>a>>b;
     cout<<a*b<<endl;

 }



   return 0;

 }

 

komentarz 8 marca 2019 przez jankustosz1 Nałogowiec (35,880 p.)
2) to wywal tablicę i daj tą poprzednią wersję

3) Bo normalnie wypisuje z E ? Wydaje mi się że nie musisz dawać setprecision.

5) Mi się porąbało nie potrzebujesz robić żadnego mnożenia pisemnego bo się to w long longu mieści. Zamień po prostu double na unsigned long long aby nie wychodziło poza zakres zmiennych przy mnożeniu.
komentarz 8 marca 2019 przez patrykos28 Nowicjusz (120 p.)

no i działa elegancko tylko przez zmianę na typ którego nie znałem: usigned long long

Dziękiwink

Podobne pytania

0 głosów
0 odpowiedzi 694 wizyt
0 głosów
3 odpowiedzi 497 wizyt
pytanie zadane 26 października 2018 w C i C++ przez niezalogowany
0 głosów
0 odpowiedzi 184 wizyt
pytanie zadane 11 maja 2023 w C i C++ przez Janchess Początkujący (480 p.)

92,619 zapytań

141,468 odpowiedzi

319,789 komentarzy

62,001 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...