Porównywanie dużych liczb

Odpowiedz Nowy wątek
2015-01-04 17:47
Krzywy Szczur
0

Witam , mam problem z zadaniem ze spoj'a. Wszystko niby mi się zgadza, jednak podczas zgłaszania zostaje przekroczony limit czasu.
Czy ktoś może pomóc ?? Link do zadania - http://pl.spoj.com/problems/KC015/ Z góry dzięki.
Oto kod:
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int x=1,a,b;
char znak1,znak2;
do
{
cin>>a>>znak1>>znak2>>b;
if(znak1 == '=' && znak2 == '=')
{
if(a == b)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
else if(znak1 == '!' && znak2 == '=')
{
if(a != b)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
else if(znak1 == '<' && znak2 == '=')
{
if(a <= b)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
else if(znak1 == '>' && znak2 == '=')
{
if(a >= b)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}

}while (x=1);

}

Pozostało 580 znaków

2015-01-04 17:49
Krzywy Szczur
0

Kod na pastebin - http://pastebin.com/YEEpfhBv

Pozostało 580 znaków

2015-01-04 17:51
aksjio
0

Z tego co pamiętam to trzeba było liczby wczytać do stringów.

Pozostało 580 znaków

2015-01-04 17:54
Krzywy Szczur
0

A czemu ten sposób jest zły? W treści zadania nie jest to sprecyzowane.

Pozostało 580 znaków

2015-01-04 17:55
0

Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr.
I zamierzasz 1000 cyfrową liczbę w int'a wsadzić ?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2015-01-04 18:00
Krzywy Szczur
0

Użyć innego typu, czy jest jakiś inny sposób na poradzenie sobie z tym problemem?

Pozostało 580 znaków

2015-01-04 18:01
1

Wsadzając liczbe do stringa nie musisz jej porównywać całej, lecz często wystarczy porównać pierwsze kilka liczb czasem nawet pierwsza wystarczy ale także ilość znaków można porównać. Jak kiedyś się bawiłem spojem, to porównywałem ilość cyfr, jeśli liczba ich jest równa, to po cyfrze porównywałem aż do znalezienia 2 róznych. Bo mając 2 liczby 5 cyfrowe i gdy pierwsza cyfra jest 5 i 6 to ta druga liczba jest nie jest na pewno mniejsza ani równa tej pierwszej.

edytowany 1x, ostatnio: aksjio, 2015-01-04 18:01

Pozostało 580 znaków

2015-01-04 18:04
Krzywy Szczur
0

Tylko, że jeszcze nie przerobiłem stringów i próbowałem w ten sposób, ale niestety chyba się nie da ;/

Pozostało 580 znaków

2015-01-04 18:07
0
Krzywy Szczur napisał(a):

Tylko, że jeszcze nie przerobiłem stringów i próbowałem w ten sposób, ale niestety chyba się nie da ;/

To wróć do kursu, a za programowanie bierz się jak już opanujesz podstawowe typy danych.

Pozostało 580 znaków

2015-01-04 18:08
0

A kto cię zmusza do użycia string'ów?

char a[10001],op[3],b[10001];
cin>>a>>op>>b;

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2015-01-04 18:15
op[3].b[1001] przecinek, nie kropka :P - aksjio 2015-01-04 18:10
Zgadza się, poprawione. - _13th_Dragon 2015-01-04 18:11
Jeszcze w a masz o 9000 elementów za dużo. :) - KazikWielki 2015-01-04 18:14
Kurka, czyżby cztery piwa już dla mnie za dużo :/ - _13th_Dragon 2015-01-04 18:16
Nom: "Przyjmujemy, że żadna z liczb nie ma więcej niż 1000 cyfr." - KazikWielki 2015-01-04 18:17

Pozostało 580 znaków

2015-01-04 19:18
Krzywy Szczur
0

A w jaki sposób mogę porównać liczbę cyfr w liczbach znajdujących się w tablicach? To będzie pierwsze sprawdzenie, w przypadku, gdy będą miały taką samą liczbę cyfr, będę porównywał pierwsze 4 elementy tablicy , tzn a[0]=b[0] itd.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0