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

Pomocy-chodzi o zadanie.

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
373 wizyt
pytanie zadane 21 maja 2018 w SPOJ przez adamus Użytkownik (860 p.)
zmienione kategorie 21 maja 2018 przez Mirosław Zelent
http://pl.spoj.com/problems/LICZBYW/

Witam, konretnie chodzi o zadanie na liczby wywazone jestem początkującym programistą i nie wiem jak sie za to zabrać, proszę o wszelką i pomoc i tlumaczenie.

Serdecznie dzieki -  Wyzej link do zadania.
komentarz 21 maja 2018 przez Mariusz08 Maniak (62,280 p.)
Zła kategoria

1 odpowiedź

+1 głos
odpowiedź 21 maja 2018 przez k222 Nałogowiec (30,150 p.)

Skoro jesteś początkujący to z tym zadaniem może być problem no ale... a i nie napisałeś w czym to piszesz (język) więc zakładam że C++.

Pierwszy problem to długość liczb - nie istieje typ danych przechowujący liczby 200 - znakowe (nie w C++) oprócz ... łańcuchów znakowych a jeszcze lepiej stringów - w nich możesz zapisać dowolnie długi ciąg znaków np. liczbę 200 - znakową.

Jeśli myślałeś o użyciu petli for i sprawdzaniu ile jakich dzilników mają następne liczby to zapomnij z uwagi na ich długość, zatem musi istnieć inny sposób i tu kłania się matma - tutaj już sam pomyśl bo to rozwala praktycznie całe zadanie, ja ci mogę tylko podpowiedzeć żebyś wziął sobie jakąś dużą liczbę wyważoną np. 630, potem dużą niewyważoną np.180 wypisał ich wszystkie dzielniki to może pomóc :D , potem tylko te dzilniki które są liczbami pierwszymi i zobaczył czy liczby wyważone się czymś wyróżniają, (najlepiej weź kilka liczb wyważonycj i kilka nie...)

komentarz 21 maja 2018 przez adamus Użytkownik (860 p.)
Doszedlem jedynie do tego ze kazda lizba wazona dzielona przez dwa np. 10/2, 14/2 daje wynik nieparzysty tylko w jaki sposb i za pomoca jakiej petli to zapisac.
komentarz 21 maja 2018 przez k222 Nałogowiec (30,150 p.)

Zakładając że masz to w stringu to najpierw musisz wziąść kilka (ile i dlaczego tak to się zastanów) liczb z końca i zamienić je na int  a potem już tylko jeden if i modulo % 2

komentarz 21 maja 2018 przez adamus Użytkownik (860 p.)
Tylko czy jedno %2 zalatwi sprawe? Nie zadziała ono we wszystkich przypadkach..
komentarz 22 maja 2018 przez k222 Nałogowiec (30,150 p.)

To to uwzględnij wink ja kojarzę to zadanie ale rozwiązywać ci go zamiaru nie mam bo nie o to tu chodzi, ewentualnie jak coś całościowego wymyślisz to możesz wrzycić to się zobaczy

komentarz 22 maja 2018 przez adamus Użytkownik (860 p.)
Ok będę wrzucal.
komentarz 26 maja 2018 przez adamus Użytkownik (860 p.)
A czy nie dalo by sie tego zapisac mniej wiecej tak ze:

Jesli ta liczba jest podzielna przez 2 i da wynik nieparzysty to ta liczba jest liczba wywazoną?
komentarz 26 maja 2018 przez k222 Nałogowiec (30,150 p.)
Dokładnie tak, prościej można to ująć że liczba jest podzielna przez 2 i nie jest podzielna przez 4 - wtedy masz dwie operacje modulo zamiast dwóch modulo i dzielenia pomiędzy, więc główny problem rozwiązałeś, z tym że w zadaniu chodzi o to żeby znaleźć najmniejszą liczbę wyważoną większą lub równą danej liczbie (a przypominam że liczby mogą mieć 200 cyfr), więc pomyśl jak to teraz ogarnąć - tak, żeby działało np. dla liczby 1234599999
komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
Czyli mowiac prosciej dla tych mniejszych liczb z zakersu np.1-100 moge wprowadzic waruenk if(lw%2==0&&lw%4!=0) cout << "Jest to liczba wwywazona";
komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int a,lw;
    do
    {
    cout << "Podaj a :";
    cin>>a;
    if(a<1||a>100)
        cout << "Podaj ponownie ";
    }while(a<1||a>100);
    if(lw%2==0&&lw%4!=0)
    while(a<=lw)    
        {
            cout << lw<<endl;
            a++;
        }
    
    
    getch();
    return 0;
}

Niestety nie wyswietla mi sie liczba wywazona co tu jeszcze dodac zeby w tym zakresie od 1-100 sie wyswietlala?
komentarz 27 maja 2018 przez k222 Nałogowiec (30,150 p.)

Można by np. przypisać jakąś wartość do lw wink

komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
W int?
komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
Bo trochę słabo rozumiem, ogolnie nie lubie takiego typu zadania... :D
komentarz 27 maja 2018 przez k222 Nałogowiec (30,150 p.)
Z tego co widzę to ty nie rozumiesz podstaw C++, a zadanie z Liczbami wyważonymi jest dla ciebie na razie na zdecydowanie zbyt wysokim poziomie,więc rada leci taka żebyś najpierw spróbować z innymi, łatwiejszymi zadaniami.

Ale co do problemu to masz zmienną lw którą tworzysz i ona nie ma wartości(jakaś losowa liczba jest tam przypisana) i tworzysz a, do którego potem coś wpisujesz, potem w pętli sprawdzasz zakres, następnie masz ifa który sprawdza czy lw jest ... - no właśnie, tylko że w lw nic nie wpisałeś więc co chcesz sprawdzić ???, następnie pętla while która nie wiem po co jest, więc dodaj tam gdzieś cin>>lw i będzie działać
komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
A do czego przypisac cin i nie usuwajac tego while'a?
komentarz 27 maja 2018 przez adamus Użytkownik (860 p.)
Tylko ze ja nie mam wpisaywac nic w lw. bo to jest ta liczba która ma sie wyswetlic gdy podam a. Przynajmniej tak to rozumiem

Podobne pytania

0 głosów
2 odpowiedzi 1,071 wizyt
pytanie zadane 15 czerwca 2016 w C i C++ przez jasio1909 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 514 wizyt
pytanie zadane 14 maja 2018 w SPOJ przez coderCpp93 Gaduła (4,200 p.)
0 głosów
1 odpowiedź 654 wizyt

93,434 zapytań

142,429 odpowiedzi

322,662 komentarzy

62,799 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

...