?? Przykro mi ale teraz nie rozumiem o co chodzi z tą odpowiedzią. Pytałem czemu taki “atak” z tym wpisem Dwie liczby silni?!!! a otrzuje odpowiedz o cyfrach i liczbach. Co ma do tego ta ospowiedz. Spodziewalem sie przeczytac np. “Napisałem tak bo ileż można pisać aby sprawdzić najpierw forum”. Na przykład cos takiego. Czemu nagle pisać o liczbach i cyfrach??? Doś obraźliwe jest potraktowanie kogoś jako debila który nie rozumie różnicy między cyframi a liczbami.
nIESTETY nawwet proste i banalne zadania wymagają odrobiny skupienia i zwracania uwagi nawet na drobiazgi. Jeżeli twoje pytanie to:
To przecież dostałeś dokładną odpowiedź, czyż nie? Może po prostu czytając jesteś zbyt rozkojarzoni i nie skupiasz się wystarczająco? Może więc wróć do początku i przeczytaj jeszcze raz?
@smroll “… i nie zwracam uwagi na tytuł”. To nie zwracasz uwagi na to na co w tym zadaniu najbardziej należy zwrócić uwagę Zadanie jest proste. Uuups, przepraszam… Zadania jest BARDZO proste, należy tylko do niego podejść z należytym skupieniem. Sugeruję zastanowić się, dlaczego tak proste zadanie masz odrzucane. Co więcej, chociaż nie podajesz kodu to jestem przekonany, ze Twój przypadek gdzieś na forum jest opisany, ale prawdę mówiąc, lepiej zrobisz, gdy, jak pisze @narbej, wrócisz do treści zadania i przeczytasz go jeszcze raz, dwa razy, … n-razy, tyle ile będzie trzeba. To co piszę to nie są żadne złośliwości, to jest uczciwa, dobra rada. Docenisz to, gdy znajdziesz odpowiedź.
Dodam jeszcze jedną rzecz. Jak wspomniałem nie znam kodu, ale najprawdopodobniej nie rozwiązujesz wskazanego zadania tylko swoje wyobrażenie tego zadania. Więc głównym problemem jest to byś zaczął rozwiązywać TO zadanie a nie WŁASNE
Prawda, prawda. Zadanie oczekuje czegoś innego niż zakładałem ja. Mój błąd. Mój kod iteracyjny wygląda tak: napewno prędzej czy później znajde rozwiązanie.
#include
using namespace std;
int a, ile;
int main()
{
cin>>ile;
for(int i=1; i<=ile;i++)
{
cin>>a;
if(a>=10)
{
cout<<0<<" "<<0<<endl;
}else
{
for(int j=a;j>=2;j--)
{
a=a*(j-1);
}
cout<<a/10%10<<" "<<a%10<<endl;
}
}
return 0;
}
Jeszcze nie działa ale może kiedyś zrozumiem treść zadania.
A jednak myliłem się! Zrobiłeś inny błąd niż przypuszczałem
Ale tak jest ze zgadywaniem błędu, gdy nie widać kodu.
Błąd jest bardzo prosty, ale nie chcę Ci na razie dawać podpowiedzi. Powtórzę tylko, że jest bardzo prosty… Samodzielne znalezienie takiego błędu też jest dobrą nauką
Przejrzałem pewne wątki dotyczące tego zadania i znalazłem kogoś z identycznym problemem…
Mam problem z tym zadaniem. Wyniki wychodzą mi dobre, ale sędzia wywala cały czas błąd. Wie ktoś dlaczego?
#include
using namespace std;
int proba,liczba,wynik=1,a=0;
int main()
{
cin>>proba;
if(proba>=1&&proba<=30)
{
for(int i=1;i<=proba;i++)
{
cin>>liczba;
if(liczba>=0&&liczba<=1000000000)
{
for(int j=1;j<=liczba;j++)
{
wynik=wynik*j;
}
}
else
{
return 0;
}
if(wynik<10)
{
cout<<a<<" "<<wynik<<endl;
}
else
{
cout<<(wynik/10)%10<<" "<<wynik%10<<endl;
}
}
}
else
{
return 0;
}
return 0;
}
-
Jeśli zaczynasz, przeczytaj koniecznie! <--kliknij w to proszę!
-
bez wciec trudno jest analizowac.
-
Test wklepac trzeba jako calosc(jakas zmienna powinna byc zerowana dla kazdej nowej liczby)
wejscie:
2
2
3
wyjscie
0 2
0 6 -
takie obliczenie nie jest optymalne moze wystapic TLE chociaz nie testowalem tego.
Mógłbym prosić Was o pomoc z poniższym programem. Próbowałem różnych testów i poległem.
#include<iostream>
using namespace std;
int main()
{
unsigned int ile_razy, pom, silnia=1;
cin >> ile_razy;
if (ile_razy > 0 && ile_razy <= 30)
{
for(int j = 0; j < ile_razy; j++)
{
cin >> pom;
if (pom == 0 || pom == 1)
{
silnia = 1;
}
if (pom > 1 && pom <= 1000000000)
{
while (pom != 1)
{
silnia *= pom--;
}
}
else (pom > 1000000000);
{
break;
}
cout << silnia / 10 << " " << silnia % 10 << endl;
}
}
return 0;
}
Ale konkretnie jakiej pomocy oczekujesz?
Zwracam Ci uwagę, że:
- Nie musisz sprawdzać czy ilość pomiarów lub badana mieści się w zakresie. To jest zapewnione. To od razu uprości kod.
- Twój kod nie podaje wyniku dla żadnej liczby. Sorry, ale jeśli nie potrafisz napisać programu, który nie jest w stanie podać rozwiązania nawet dla danych testowych, w tak banalnym przypadku, to po prostu zacznij od najprostszych zadań. Ja ci nie wskażę, gdzie jest błąd. Jest beznadziejnie prosty. Zresztą, gdy uwzględnisz to co napisałem na początku to problem zniknie.
- Oczywiście nie zniknie problem z brakiem zaliczenia na SPOJ, ale to co powinno zostać naprawione jest opisane już chyba kilkadziesiąt przynajmniej razy. Zmuś się do odrobiny wysiłku i poczytaj na wątkach dotyczących tego tematu.
Na co mam zwrócić uwagę jeżeli program kompiluje u siebie na komputerze i działa. A na spoju: przekroczyłem czas.
Zmieniłem program po twoich sugestiach i działa. Ale nadal nie wiem gdzie był błąd. W pierwszej wersji programu który nie pokazywał żadnego wyniku. Jeżeli dodałem instrukcję cout do każdego instrukcji, warunku (if, for itp) aby przetestować poprawność kodu - działał bez zarzutu. Po skasowaniu instrukcji cout, nie działał…?
Przeglądając forum i czytając różne posty. Trzeba czytać dokładnie zadania. Dlatego umieściłem warunki co do zakresu liczb. Ale rozumiem, po Twojej odpowiedzi że nie trzeba się tym zajmować?
Na co mam zwrócić uwagę w kolejnych zadaniach jeżeli u mnie kod będzie się kompilował i działał a na spoju będę miał przekroczony czas?
Poniżej przesyłam kod działający.
#include<iostream>
using namespace std;
int main()
{
unsigned int ile_razy, pom, silnia=1;
cin >> ile_razy;
for(int j = 0; j < ile_razy; j++)
{
cin >> pom;
if (pom == 0 || pom == 1)
{
silnia = 1;
}
else
{
while (pom != 1)
{
silnia *= pom--;
}
}
cout << silnia / 10 << " " << silnia % 10 << endl;
silnia = 1;
}
return 0;
}
- Co do błędu, który miałeś wcześniej i nie były wypisywane wyniki…
Przejrzyj swój kod linijka po linijce, bardzo dokładnie, powinieneś go znaleźć. Podkreślam DOKŁADNIE - To, że kod się kompiluje, jeszcze nie oznacza, że jest poprawny. Może mieć błąd wykonania, może przekraczać czas.
- Ty w zadaniu masz teraz dwa problemy.
a. błędna odpowiedź
b. przekroczenie czasu.
Co do podpunktu a) to nawet w tym wątku @narbej pisze by poczytać o różnicy między cyfrą a liczbą. Rozumiesz tę różnicę? Poczytaj sobie.
Co do podpunktu b) to napisałem we wcześniejszym poście w punkcie 3.