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

C++ Czy umiesz potęgować SPOJ

Object Storage Arubacloud
0 głosów
1,490 wizyt
pytanie zadane 6 czerwca 2020 w C i C++ przez Stefan Marzec Użytkownik (710 p.)

Siema. Wiem że wielokrotnie był wałkowany tu ten temat. Chodzi o to, że napisałem program na SPOJ "czy umiesz potęgować" w c++ tym sprytnym sposobem. I wywala błędną odpowiedź. Nie wiem co jest nie tak w tym kodzie. Na ideone i w kompilatorze wszystko śmiga. Pomożecie? Zadanie: https://pl.spoj.com/problems/PA05_POT/

#include <iostream>
using namespace std;

void solve(){
	int a, b, wynik;
	cin>>a>>b;
	if(b>0){
		if(b%4 == 0){
			b=4;
		}
		else{
			b=b%4;
		}
		wynik=a;
		for(int j=1; j<b; j++){
			wynik*= a;
		}
		cout<<wynik%10<<endl;
	}
	else{
		cout<<1<<endl;
	}
}

int main(){
	int z;
	cin>>z;
	for(int i=0; i<z; i++){
		solve();
	}
	return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 6 czerwca 2020 przez Whistleroosh Maniak (56,980 p.)
edycja 6 czerwca 2020 przez Whistleroosh

Liczby a i b mogą mieć wartość do 10^9. Zobacz co się stanie dla testu w którym a = 10^9. Wtedy w linii 16 wykonasz do 3 mnożeń. Dostaniesz wartość  (10^9)^4, czyli to wyjdzie poza limit zmiennej typu int. Żeby temu zaradzić musisz modulować na bieżąco podczas mnożenia, czyli robisz coś takiego:

wynik = (wynik*(a%10))%10;

I jeszcze w linii 14 dobrze by było gdybyś dał:

wynik = a%10

Podobne pytania

0 głosów
0 odpowiedzi 416 wizyt
pytanie zadane 28 października 2021 w C i C++ przez DrTomas Nowicjusz (140 p.)
0 głosów
5 odpowiedzi 782 wizyt
pytanie zadane 31 stycznia 2021 w C i C++ przez Rainbow99 Początkujący (430 p.)
+1 głos
1 odpowiedź 1,990 wizyt

92,580 zapytań

141,432 odpowiedzi

319,665 komentarzy

61,965 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!

...