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

KC015 - Porównywanie dużych liczb SPOJ

0 głosów
895 wizyt
pytanie zadane 15 sierpnia 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)

Cześć, mam problem z zadaniem ze SPOJA (https://pl.spoj.com/problems/KC015/). Napisałem program który u mnie działa jak należy, ale SPOJ mi go odrzuca z wynikiem "Błędna Odpowiedź". Wie ktoś dlaczego? Mój kod:

#include <iostream>
#include <string>
using namespace std;

string liczba1,liczba2;
string znak;

int main(){
while(cin>>liczba1)
{
    cin>>znak;
    cin>>liczba2;
    int p=0;
    if(znak=="==")
    {
        if(liczba1.size()==liczba2.size())
        {
            for(int  i=0;i<liczba1.size();i++)
            {
                if(liczba1[i]!=liczba2[i])
                {cout<<"0"<<endl;
                p=1;
                }
                if(i==liczba1.size()-1)
                {if(p==0)
                {
                      if(liczba1[i]==liczba2[i])cout<<"1"<<endl;
                }
                }
            }
        }else cout<<"0"<<endl;
    }
    if(znak=="<=")
    {
        if(liczba1.size()<=liczba2.size())
        {
            for(int  i=0;i<liczba1.size();i++)
            {
             if(p==0){
             if(liczba1[i]<liczba2[i])
             {cout<<"1"<<endl;
             p=1;
             }
              if(liczba1[i]>liczba2[i])
             {cout<<"0"<<endl;
             p=1;
             }
             }
             if(p==0)
             {
             if(i==liczba1.size()-1)
             {
                 if(liczba1[i]<=liczba2[i])cout<<"1"<<endl;
                 else cout<<"0"<<endl;
             }
            }
            }
        }else cout<<"0"<<endl;
    }
    if(znak==">=")
    {
    if(liczba1.size()>=liczba2.size())
        {
             for(int  i=0;i<liczba1.size();i++)
            {
             if(p==0){
             if(liczba1[i]>liczba2[i])
             {cout<<"1"<<endl;
             p=1;
             }
              if(liczba1[i]<liczba2[i])
             {cout<<"0"<<endl;
             p=1;
             }
             }
             if(p==0)
             {
             if(i==liczba1.size()-1)
             {
                 if(liczba1[i]>=liczba2[i])cout<<"1"<<endl;
                 else cout<<"0"<<endl;
             }
            }
            }
            }else cout<<"0"<<endl;

        }
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 15 sierpnia 2018 przez mokrowski Mędrzec (158,960 p.)
Ok. Jeśli 2 liczby kodujesz jako std::string:

1. Która liczba będzie większa? Ta która ma dłuższy std::string czy krótszy? A jak mają taką samą długość to można stwierdzić że są równe?

2. Który string jest "większy" porównując go zwykłymi operatorami dla std::string? "8123" czy "9123"?

Wystarczy tych podpowiedzi...

Podobne pytania

0 głosów
1 odpowiedź 1,573 wizyt
0 głosów
1 odpowiedź 522 wizyt
pytanie zadane 1 czerwca 2018 w C i C++ przez piter11251 Obywatel (1,300 p.)
0 głosów
0 odpowiedzi 557 wizyt
pytanie zadane 25 września 2021 w C i C++ przez Exequilas Nowicjusz (210 p.)

93,743 zapytań

142,683 odpowiedzi

323,300 komentarzy

63,330 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...