CSES - Datatähti 2018 alku - Results
Submission details
Task:Kyselyt
Sender:Kisse
Submission time:2017-10-11 21:24:27 +0300
Language:Java
Status:READY
Result:37
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED25
#30
Test results
testverdicttimegroup
#1ACCEPTED0.31 s1details
#2ACCEPTED0.31 s2details
#30.21 s3details

Code

import java.math.BigInteger;
import java.util.Scanner;

public class Kyselyt {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int q = Integer.parseInt(input.next());
        for (int i = 0; i < q; i++) {
            String inputString = input.next();
            BigInteger index = new BigInteger(inputString);
            if (index.compareTo(new BigInteger("10")) < 0) {
                System.out.println(index);
            }
            else {
                BigInteger base = new BigInteger("10");
                BigInteger len = new BigInteger("2");
                while (true) {
                    if (index.compareTo(base) < 0) {
                        len = len.subtract(new BigInteger("1"));
                        base = base.subtract(new BigInteger("9").multiply(len).multiply(new BigInteger("10").pow(len.intValue() - 1)));
                        break;
                    }
                    base = base.add(new BigInteger("9").multiply(len).multiply(new BigInteger("10").pow(len.intValue() - 1)));
                    len = len.add(new BigInteger("1"));
                }
                BigInteger value = new BigInteger("10");
                System.out.println(value.pow(len.intValue() - 1).add(new BigInteger(Integer.toString(Math.floorDiv(index.subtract(base).intValue(), len.intValue())))).toString().charAt((index.subtract(base.mod(len))).mod(len).intValue()));
            }
        }
    }
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
1000
582
214
723
273
...

correct output
0
1
7
7
6
...

user output
0
1
7
7
6
...

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
615664
916441
627600
279508
...

correct output
1
2
3
2
2
...

user output
1
2
3
2
2
...

Test 3

Group: 3

Verdict:

input
1000
672274832941907421
260504693279721732
646999966092970935
100853063389774434
...

correct output
7
2
2
0
9
...

user output
9
7
0
2
4
...

Error:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16
	at java.lang.String.charAt(String.java:658)
	at Kyselyt.main(Kyselyt.java:27)