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

AL_10_12 - Żegnaj lato na rok

Object Storage Arubacloud
0 głosów
378 wizyt
pytanie zadane 29 kwietnia 2017 w SPOJ przez BinaryMan Stary wyjadacz (12,620 p.)

Witam !
Ma ktoś pomysł dlaczego dla tego kodu jest "przekroczono limit czasu" ? 
Zadanie: http://pl.spoj.com/problems/AL_10_12/

 

#include <iostream>

using namespace std;

unsigned long long int a=0,b=0,c=0;

unsigned long long int poczatek=0, koniec=0;

unsigned long long int liczby=0;


int main()
{

    cout << "Podja liczby calkowite: " << endl;
    cin>>a>>b>>c;

    if((a!=0)&&(b!=0)&&(c!=0))
    {
        cout << "Podja poczatek i koniec przedzialu: " << endl;

        while(cin>>poczatek>>koniec)
        {
            if((poczatek!=0)&&(koniec!=0))
            {
                for(unsigned long long int i=poczatek; i<=koniec; i++)
                {

                    if(i%a==0) liczby++;
                    else if(i%b==0) liczby++;
                    else if(i%c==0) liczby++;

                    //cout<<i<<endl;
                }

                cout<<liczby<<endl;
                poczatek=0;
                koniec=0;
                liczby=0;
            }

        }

    }

    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 30 kwietnia 2017 przez Michał628496 Pasjonat (17,340 p.)

Radzę wywalić wszystkie cout które nie wyświetlają wyniku bo inaczej będziesz miał ANS.

komentarz 30 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)
w czasie gdy poddaje kod ocenie , są one usunięte  i zostaje tyko ten co wyświetla liczby
0 głosów
odpowiedź 30 kwietnia 2017 przez niezalogowany

Wyrzuć te ify, bo nie są do niczego potrzebne. Wydaje mi się, że problem stanowi metoda. Podaj sobie jakiś duży zakres liczb (1-1000000000). Program będzie działał za wolno co tłumaczy wyskakiwanie na spoju komunikatu "przekroczono zakres czasu". Jeżeli masz podany dzielnik 2 i np zakres 1 - 1000 to jesteś w stanie określić ile tam jest liczb podzielnych przez 2. Nie musisz za każdym razem sprawdzać każdej liczby. Tylko problem jak przerobić to pod 3 liczby... Tyle podpowiedzi ;)

PS. Często używasz typu unsigned long long int - może warto skorzystać z typedef i nazwać sobie krócej ten typ?
 

typedef unsigned long long int ulong;

ulong a,b,c; 

 

komentarz 30 kwietnia 2017 przez BinaryMan Stary wyjadacz (12,620 p.)
Fakt mógłbym tak zrobić. A co do zadania to zakres liczb a,b i c jest ogromny o na prawdę ciężko wpaść na to jak zrobić to inną metodą jak takich właśnie if-ów :D

Podobne pytania

0 głosów
2 odpowiedzi 360 wizyt
pytanie zadane 26 lipca 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
1 odpowiedź 1,065 wizyt
pytanie zadane 19 października 2016 w C i C++ przez Paq_93 Początkujący (260 p.)
–1 głos
2 odpowiedzi 222 wizyt
pytanie zadane 6 sierpnia 2016 w C i C++ przez Skorpion1123 Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

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

...