| Task: | Bittijono |
| Sender: | lumieer |
| Submission time: | 2016-10-09 17:58:07 +0300 |
| Language: | Java |
| Status: | READY |
| Result: | 10 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 10 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| #3 | RUNTIME ERROR | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.17 s | 1 | details |
| #2 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #3 | RUNTIME ERROR | 0.66 s | 3 | details |
Code
//package bittijono;
import java.util.ArrayList;
import java.util.Scanner;
public class Bittijono {
public static void main(String[] args) {
final Scanner lukija = new Scanner(System.in);
int syotteidenMaara = lukija.nextInt();
//StringBuilder syotteet = new StringBuilder();
//Otetaan ne pari pistetta, korvaa ylemmalla kun jaksat
ArrayList<Long> syotteet = new ArrayList<>();
for (int o = 0; o < syotteidenMaara; o++) {
long syote = lukija.nextLong();
syotteet.add(syote);
}
for (long syote : syotteet) {
long luku = syote;
int pot = 0;
/*
for (int i = 0; i < 100; i++) {
pot = potenssi(luku);
//System.out.println("pot " + pot);
//System.out.println("Laskettavien maara: " + (luku - Math.pow(2, pot)));
luku = (long) (luku - Math.pow(2, pot));
System.out.println("LUKU " + luku);
if (luku <= 10) {
if (syote > 9) {
pot = pot + (i % 2);
}
System.out.println("Valmis! " + pot);
break;
}
}
if (luku == 0) {
if (pot % 2 == 0) {
System.out.println("0");
return;
} else {
System.out.println("1");
return;
}
}
System.out.println("JONOSTA");
*/
StringBuilder jono = laskeBitteja(pot % 2, luku);
System.out.println(jono.charAt((int) (luku - 1)));
}
}
public static StringBuilder laskeBitteja(int alku, long maara) {
StringBuilder jono = new StringBuilder();
//Luodaan nelinumeroinen jonon alku
if (alku == 0) {
jono.append("0110");
} else {
jono.append("1001");
}
//System.out.println(jono);
StringBuilder osa1 = new StringBuilder();
StringBuilder osa2 = new StringBuilder();
for (int i = 0; i < potenssi(maara) - 1; i++) {
//Jaetaan jono kahteen osaan, ja lisataan ne jonoon
osa1.append(jono.subSequence(jono.length() / 2, jono.length()));
osa2.append(jono.subSequence(0, jono.length() / 2));
//System.out.println("Jono " + jono);
//System.out.println("OSA1 " + osa1);
jono.append(osa1);
//System.out.println("OSA2 " + osa2);
jono.append(osa2);
osa1.delete(0, osa1.length());
osa2.delete(0, osa2.length());
}
return jono;
}
public static int potenssi(long syote) {
double aiempi = syote * 1.0;
int potenssi = 1;
for (int i = 1; i <= 54; i++) {
if (Math.pow(syote, 1.0 / i) - 2 >= 0 && Math.pow(syote, 1.0 / i) - 2 <= aiempi - 2) {
aiempi = Math.pow(syote, 1.0 / i);
} else {
potenssi = i - 1;
break;
}
}
return potenssi;
}
}
Test details
Test 1
Group: 1
Verdict: ACCEPTED
| input |
|---|
| 100 62 9 12 73 ... |
| correct output |
|---|
| 1 1 1 0 1 ... |
| user output |
|---|
| 1 1 1 0 1 ... |
Test 2
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 565433 141881 120108 825392 ... |
| correct output |
|---|
| 1 1 0 0 1 ... |
| user output |
|---|
| (empty) |
Test 3
Group: 3
Verdict: RUNTIME ERROR
| input |
|---|
| 100000 374768524402011755 937067109466254318 389256426086302899 932585725667010169 ... |
| correct output |
|---|
| 0 1 1 1 1 ... |
| user output |
|---|
| (empty) |
Error:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1040535958 at java.lang.AbstractStringBuilder.charAt(AbstractStringBuilder.java:210) at java.lang.StringBuilder.charAt(StringBuilder.java:76) at Bittijono.main(Bittijono.java:62)
