Zrobilem omawiane zadanie poprzez warunki if w javie.
Na Ideone,com poprawnie rozwiązuje.
Na spoj daje błąd wykonania (NZEC) .
W czym sie myle. ???
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc = new Scanner(System.in);
int a=0;
boolean warunek=true;
// System.out.println(“czekam -1”);
a=sc.nextInt(); System.out.println(a);
// System.out.print("_-1");
while(warunek) {
if (a==42) {
// System.out.println("czekam 0");
a=sc.nextInt(); System.out.println(a);
// System.out.print("_0");
}
if (a!=42) {
// System.out.println("czekam 1");
a=sc.nextInt();System.out.println(a);
// System.out.print("_1");
if (a==42) {
// System.out.println("czekam 2");
a=sc.nextInt();System.out.println(a);
// System.out.print("_2");
if (a!=42) {
// System.out.println("czekam 3");
a=sc.nextInt();System.out.println(a);
//System.out.print("_3");
if (a==42) {
//System.out.println("czekam 4");
a=sc.nextInt();System.out.println(a);
// System.out.print("_4");
if (a!=42) {
// System.out.println("czekam 5");
a=sc.nextInt();System.out.println(a);
// System.out.print("_5");
if (a==42) {
warunek=false;
}
}
}
}
}
}
}
//System.out.println("sukces");
}
}
Witam. Próbowałem wykonać program za pomocą wektorów, jednak wyskakiwało przekroczenie limitu czasu. Zmieniłem koncept na użycie stringów, ale dzieje się to samo. Mógłby mi ktoś pomóc? Link: https://ideone.com/NI4bae3
using namespace std;`
int main()
{
string do_wyswietlenia="";
string zapasowy;
int stop;
cin>>zapasowy;
do_wyswietlenia+=zapasowy+"\n";
while(stop!=3)
{
BBB:
stop=0;
AAA:
if(zapasowy!="42")
{
cin>>zapasowy;
do_wyswietlenia+=zapasowy+"\n";
if(zapasowy=="42")
{
stop++;
if(stop!=3)
{
cin>>zapasowy;
do_wyswietlenia+=zapasowy+"\n";
goto AAA;
}
}
else
goto BBB;
}
if(stop!=3)
{
cin>>zapasowy;
do_wyswietlenia+=zapasowy+"\n";
}
}
cout<<do_wyswietlenia;
return 0;
}
Czy powinienem zmienić cały koncept czy da się to jakoś naprawić?
Spróbowałem zrobić to zrobić tak, ale nadal dostaje przekroczenie limitu czasu.
link1
using namespace std;
int n,licznik=0;
int main()
{
bool przelacznik=false; //false-poprzednia 42 true-poprzednia !42
while(licznik!=3)
{
cin>>n;
cout<<n<<endl;
if(n!=42)
{przelacznik=true;
cin>>n;
cout<<n<<endl;
if(n!=42){licznik=0;}}
if(n==42&&przelacznik==true)
{
licznik++;
przelacznik=false;
}
else if(n==42)
{
przelacznik=false;
licznik=0;
}
}
return 0;
}
Witam, udało mi się zrobić program, który po wprowadzeniu danych wejściowych poprawnie wyprowadza dane wyjściowe, jednak sędzia wyrzuca błąd “Przekroczono limit czasu”. Może ma ktoś pomysł jak skrócić czas działania mojego programu?
Mój kod: http://ideone.com/3BoEWy10
Faktycznie nie przechodziło tego testu. Niepotrzebnie w jednym momencie zerowałem zmienną x, dlatego program mógł wykonywać się w nieskończoność. Poprawiłem to, sprawdziłem, wydaje mi się, wszystkie przypadki (moim zdaniem wszystko działa tak jak powinno), jednak dalej wywala błąd “Przekroczono limit czasu”.
PS. W zadaniu dane wejściowe wyglądają tak [Po lewej], u mnie wyglądają tak [Po prawej]:
Wejście:
42 42
42 42
12 12
13 13
42 42
11 11
42 42
43 43
42 42
42
99
01
Nie wiem w jaki sposób autorowi zadania udało się dopisać kolejne trzy liczby, nie ustalając z góry ilości testów (w tym przypadku 12)
Podejrzewam, że program kończy się na 01, ponieważ nie jest to de facto liczba dwucyfrowa.
U mnie program kończy się na trzeciej “42” wpisanej po innej liczbie.
Mój leciutko poprawiony kod: http://ideone.com/IyJQ4D12
Poprawiłem program, ale nadal występuje przekroczenie czasu. Nie rozumiem też,czy te ‘42’ poprzedzone inną liczbą mają się powtórzyć w kolejności czy nie, bo wyżej dwie osoby pisały co innego.
link3
Co masz na myśli pisząc “mają się powtórzyć w kolejności”?
PS. Twój program nie przechodzi testu powyżej:
in:
11
11
42
11
11
42
11
11
42
Edit. Przeanalizowałem twój program i miałeś dokładnie taki sam błąd co ja, czyli wyzerowałeś daną “licznik” w jednym miejscu niepotrzebnie (lub dwóch, musisz sprawdzić) wystarczy to skasować.
Wklepałem poprawiony twój kod do spoja i sędzia go przyjął