1 / 13
Aug 2017

Witam, nie mam pojęcia co robie źle, uważam że zadanie jest wykonane poprawnie. Funkcje używałem również w innym zadaniu i nie było problemu:
Link do zadania:
http://pl.spoj.com/problems/FR_07_01/17

#include <iostream>
 
using namespace std;
//http://pl.spoj.com/problems/FR_07_01/
 
int reverseNumber(long long n){
	int reverse = 0;
	while (n != 0)
    {
      reverse = reverse * 10;
      reverse = reverse + n%10;
      n = n/10;
    }
	return reverse;
}
int main() {
	long long tests,a,b = 0;
 
	cin >> tests;
	for (int i=0; i < tests; i++){
		cin >> a;
		cin >> b;
		
		long long reverseNumberA = reverseNumber(a);
		long long reverseNumberB = reverseNumber(b);
		
		if (reverseNumberA > reverseNumberB ){
			cout << reverseNumberA;
		}
		else{
			cout << reverseNumberB;
		}
		cout<<endl;
	}
	return 0;
}
  • created

    Aug '17
  • last reply

    May '23
  • 12

    replies

  • 1.4k

    views

  • 7

    users

  • 2

    links

to może pomyśl czy używając twojej metody, odwrócona liczba da wartość początkową ?

mógłbym podać przykład, ale to byłoby za łatwe :slight_smile:

No raczej tak, jeśli liczbe z wejścia się odwróci to znaczy że jest oryginalną liczbą, przynajmniej tak mówi zadanie ...

tak, jeżeli się poprawnie odwróci - ale można też niepoprawnie odwrócić :slight_smile: - i będzie coś innego

Okej, w tym wypadku jeśli mamy liczby 120 320 to po moim odwróceniu liczb wychodzi 021, 023, dorobiłem żeby zamiast 21 wypisywało 021 i dalej jest zła odpowiedź. Szukam dalej...

Racja, trzeba uwzględnić zera na początku na wejściu również. Program przechodzi normalnie. Dzięki za podpowiedzi !

1 year later

Oryginalna liczba chyba nie powinna mieć na początku zer. Zatem można chyba przyjąć że skoro na wejście dostajemy liczbę odwróconą to nie będzie mieć na końcu zer. Jeżeli jednak autor zadania przewidział takie liczby na wejściu (np 100) to należałoby zmienić treść bo jest myląca. Nie robię szumu tylko dopytuję jak jest. I ewentualnie byłoby miło gdyby ktoś rozwiał moje wątpliwości.

Rozwiewam wątpliwości:

pytanie: co to znaczy w matematyce “powinna”? Albo może albo nie może mieć tak zwanych zer wiodących. Nie ma ku nim przeciwskazać, a zapis liczbowy nie musi być jednoznaczny (1 = 0.(9) = 3/3 = itd). Ostatecznie zatem:
liczba 007 (numer Jamesa Bonda) jest poprawnym zapisem liczbowym, choć oczywiście pomimo poprawności niestosowanym. Można dodawać dowolną ilość zer przed liczbą, podobnie jak można pisać dowolną ilość zer po przecinku na końcu zapisu dziesiętnego liczby, np. 1,20 zł - co robimy już częściej. Zatem zadanie jest poprawne, choć rzadko pisze się zera przed liczbą (ale są ku temu czasami powody - jak ułatwienie sobie obliczeń pisemnych czy porządek leksykograficzny liczb).

Dziękuję za wyjaśnienie. O wiodących zerach nie będę dyskutował bo nie chcę być postrzegany za forumowego trolla :wink:

4 years later

Czemu nie przechodzi? Czy użycie stringów powoduje błędną odpowiedź?

dzięki wielkie pomogła konwersja string na int :smiley: