Postanowiłem, że sobie porobię zadania ze spoja, zaczynając od najłatwiejszych - idąc w kierunku tych trudniejszych. No i tutaj parę razy spotkałem problem NZEC bodajże, co mnie zdziwiło bo zawsze u mnie się kompiluje i zawsze daje dobre wyniki.
Pierwsze zadanie: http://pl.spoj.com/problems/CALC/
Moje rozwiązanie:
Scanner scanner = new Scanner(System.in);
while(true){
char sign = scanner.next().charAt(0);
int a = scanner.nextInt();
int b =scanner.nextInt();
switch (sign){
case '+': System.out.println(a+b); break;
case '-': System.out.println(a-b); break;
case '/': System.out.println(a/b); break;
case '*': System.out.println(a*b); break;
case '%': System.out.println(a%b); break;
}
}
Drugie zadanie: http://pl.spoj.com/problems/BINOMS/
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (n-->0){
long a = scanner.nextLong();
long b = scanner.nextLong();
long up = 1;
for(long i = (a+1-b); i<=a; i++) up*=i;
long down = 1;
for(long i=1; i<=b; i++) down*=i;
System.out.println(up/down);
}
Tutaj po prostu "skróciłem" drugi człon mianownika skróciłem po prostu z licznikiem, a potem podzieliłem przez wartość silni z pierwszego członu.
Trzecie zadanie: http://pl.spoj.com/problems/ROWNANIE/
Scanner scanner = new Scanner(System.in);
for(;;){
float a = Float.parseFloat(scanner.next());
float b = Float.parseFloat(scanner.next());
float c = Float.parseFloat(scanner.next());
float delta = b*b-4*a*c;
System.out.println(delta>0?"2":delta<0? "0":"1");
}
Tutaj myślałem, że chodzi o to że u mnie w Intelliju nie chciało zapisać liczb zmiennoprzecinkowych oddzielonych '.' tylko musiałbyć ',' ale już sprarsowanie z '.' zadziałało. Tylko nadal nie chce przyjąć.
Czwarte zadanie: http://pl.spoj.com/problems/PP0506A/
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
while (n-->0){
int numberOfPoints = scanner.nextInt();
Point[] points = new Point[numberOfPoints];
for(int i=0; i<numberOfPoints; i++ ){
String name = scanner.next();
int x = scanner.nextInt();
int y = scanner.nextInt();
points[i]= new Point(name, x, y);
}
Arrays.sort(points);
for (Point point: points){
System.out.println(point.name+" "+point.x+" "+point.y);
}
System.out.println();
}
...
static class Point implements Comparable<Point>{
public String name;
public int x;
public int y;
public Point(String n, int xx, int yy) {
name = n;
x = xx;
y = yy;
}
public int compareTo(Point point){
int v = (int)( Math.sqrt(this.x * this.x + this.y * this.y) - Math.sqrt(point.x * point.x + point.y * point.y));
return v;
}
}
Takie same problemy miałem z "Czy umiesz potegować?" Ale w końcu sędzia to puścił. Tutaj nie chce. Jakieś pomysły czemu nie chce zaakceptować?