Problem z odczytem

0

Napisze krotko. Zaczynam z java i zaczalem wykonywac proste algorytmy na pl.spoj. Robiac zadanie 'Czy umiesz potęgować' natrafilem na problem jak pobrac dwie liczby w jednym wierszu przykladowo:

11 2

niestety program wtedy nie dziala jesli jednak podam:

9 2 lub dowolne inne liczby jednocyfrowe to wszystko smiga.

Oto moj kod, prosto z NetBeans'a:

package czyumieszpotegowac;
import java.util.Scanner;

public class CzyUmieszPotegowac {

    public static void main(String[] args) {
        int d;
        int a;
        int b;
        Scanner odczyt = new Scanner(System.in);
        do
        {
        d = odczyt.nextInt();
        }
        while(d<1 || d>10);
        for(int i =1; i<=d; i++)
        {
            a = odczyt.nextInt();
            b = odczyt.nextInt();
            if(a%10==2)
            {
                switch(b%4) {
                case 0 : System.out.println("6"); break;
                case 1 : System.out.println("2"); break;
                case 2 : System.out.println("4"); break;
                case 3 : System.out.println("8"); break;
                }
            }
            if(a%10 ==3)
            {
                switch(b%4) {
                case 0 : System.out.println("1"); break;
                case 1 : System.out.println("3"); break;
                case 2 : System.out.println("9"); break;
                case 3 : System.out.println("7"); break;
                }
            }
            if(a%10 ==4)
            {
                switch(b%2) {
                case 0 : System.out.println("6"); break;
                case 1 : System.out.println("4"); break;
                }
            }
            if(a%10==5) System.out.println("5");
            if(a%10==6) System.out.println("6");
            if(a%10==7)
            {
                switch(b%4) {
                case 0 : System.out.println("1"); break;
                case 1 : System.out.println("7"); break;
                case 2 : System.out.println("9"); break;
                case 3 : System.out.println("3"); break;
                }
            }
            if(a%10 ==8)
            {
                switch(b%4) {
                case 0 : System.out.println("6"); break;
                case 1 : System.out.println("8"); break;
                case 2 : System.out.println("4"); break;
                case 3 : System.out.println("2"); break;
                }
            }
            if(a%10 ==9)
            {
                switch(b%2) {
                case 0 : System.out.println("1"); break;
                case 1 : System.out.println("9"); break;
                }
            }
            if(a%10==10) System.out.println("0");
        }
                
    }
    
}

Oczywiscie najpierw zrobilem to normalnie z potegami, bez tych zaleznosci i switchow ale sedzia wyswietlil ze program dziala za wolno - poniewaz podstawa moze wynosic np. 1000000

// na wyjsciu:
Dla każdego przypadku z wejścia Twój program powinien wypisać (w osobnej linii dla każdego przypadku z wejścia) cyfrę jedności liczby a^b zapisanej dziesiętnie.

0
Yesman_ napisał(a):

jak pobrac dwie liczby w jednym wierszu przykladowo:

11 2

np w taki sposób:


...

String[] liczby = odczyt.nextLine().split(" ");
int a = Integer.parseInt(liczby[0]);
int b = Integer.parseInt(liczby[1]);
...

0

Hej,

Jak dla mnie wszystko działa prawidłowo. Najpierw musisz podać liczbę z przedziału (0,10), a potem dwie dowolne liczby tyle razy ile ta liczba. Czyli dane wejściowe to np. takie:

2
11 2
13 4

Nie bardzo rozumiem w czym problem.

0

A nie możesz skorzystać z metod scannera?

Dla lini:

int firstNumber = scanner.nextInt();
int secondNumber = scanner.nextInt();
0

Dobra widze ze zle wytlumaczylem. Ten kod dziala w nastepujacy sposob:
2 (ilosc liczb do poteg np. dwie)
11 2 (jedynaście do drugiej)
2 2 (dwa do drugiej)

Program zwraca ostatnia cyfre tej liczby (potegi). Problem w tym ze do odczytu poteg zastosowalem:

 a = odczyt.nextInt();
 b = odczyt.nextInt();

i dziala tylko jesli liczby do potegowania sa jednocyfrowe np:
2 2
3 7
8 8
9 9 itd
Gdy jednak wpisuje liczby dwucyfrowe np:
11 2
13 3
odczyt nie dziala i nie zwraca wyniku. Jak temu zaradzic?

0

Twój kod pobiera dwie liczby, niezależnie od ilości ich cyfr. Błąd tkwi gdzieś w switchach.
Możesz podać przykład liczby a, która spełnia warunek a%10==10?

0
bogdans napisał(a):

Twój kod pobiera dwie liczby, niezależnie od ilości ich cyfr. Błąd tkwi gdzieś w switchach.
Możesz podać przykład liczby a, która spełnia warunek a%10==10?

Ahh oczywiscie masz racje, po prosru zaczynam z Java i myslalem ze z odczytem jest cos nie tak, ze tym sposobem nie czyta spacji czy cos.
Mial to byc warunek ze: if(a%10==0) System.out.println("0"); a nie ==10,
dodatkowo dopisalem if(a%10==1) System.out.println("1"); i program zostal zaakceptowany.

Dziekuje bardzo za pomoc, super :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1