# DatatÃ¤hti 2018 alku

 Start: 2017-10-02 00:00:00 End: 2017-10-16 00:00:00

CSES - DatatÃ¤hti 2018 alku - Results
History
2017-10-14 19:54:55100
2017-10-14 19:48:0137
2017-10-14 01:18:490
 Task: Kyselyt Sender: HeikkiSimojoki Submission time: 2017-10-14 19:54:55 Language: C++ Status: READY Score: 100

## Feedback

 group verdict score #1 ACCEPTED 12 #2 ACCEPTED 25 #3 ACCEPTED 63

## Test results

 test verdict time (s) group #1 ACCEPTED 0.08 / 1.00 1 details #2 ACCEPTED 0.04 / 1.00 2 details #3 ACCEPTED 0.09 / 1.00 3 details

## Code

```#include <iostream>
#include <cmath>

//Amount of digits in a line where the greatest number is the greatest number which still has n digits
unsigned long amtDigits(unsigned long n){
if(n == 1) return 9;
//Largest number
unsigned long k = (unsigned long)pow(10, n) - 1;

//Substract the numbers where there are less than n digits, multiply by length of one number,
//and add the length of the subtracted numbers
k -=  (unsigned long)pow(10, n - 1) - 1;
k *= n;
k += amtDigits(n - 1);

return k;
}

unsigned long getNum(unsigned long n){
if(n < 10) return n;

unsigned long i = 2;
while(true){
// See if n is in the range of numbers with i digits
unsigned long bottom = amtDigits(i - 1);
unsigned long top = amtDigits(i);

if(bottom <= n && n <= top){
//count n from bottom

n = n - bottom - 1;

//The number n is pointing in
unsigned long num = (unsigned long)pow(10, i-1) + n / i;

//The requested digit of said number
unsigned long dig = n - (( n / i ) * i);

//Index the digit backwards
dig = i - dig;

//Get the digit
return (num % (unsigned long)pow(10, dig)) / (unsigned long)pow(10, dig - 1);
}
i++;
}
}

int main(){
int numCommands;
std::cin >> numCommands;

unsigned long commands[numCommands];

for(int i = 0; i < numCommands; i++){
std::cin >> commands[i];
}

for(int i = 0; i < numCommands; i++){
std::cout << getNum(commands[i]) << "\n";
}

return 0;
}```

## Test details

### Test 1

Group: 1

Verdict: ACCEPTED

input
```1000 582 214 723 273 480 280 237 204 134 210 565 640 784 508 846 532 465 952 205 ...```
view   save

correct output
```0 1 7 7 6 1 5 4 7 6 2 2 2 2 8 2 1 3 1 8 ...```
view   save

user output
```0 1 7 7 6 1 5 4 7 6 2 2 2 2 8 2 1 3 1 8 ...```
view   save

### Test 2

Group: 2

Verdict: ACCEPTED

input
```1000 615664 916441 627600 279508 126605 944125 25887 440405 352957 206746 951305 821686 716797 333476 430123 167570 619834 411383 459670 ...```
view   save

correct output
```1 2 3 2 2 8 7 9 8 3 7 1 9 8 4 3 1 9 9 6 ...```
view   save

user output
```1 2 3 2 2 8 7 9 8 3 7 1 9 8 4 3 1 9 9 6 ...```
view   save

### Test 3

Group: 3

Verdict: ACCEPTED

input
```1000 672274832941907421 260504693279721732 646999966092970935 100853063389774434 469646937576313460 292789544562527987 202678876957048242 921044261294332160 293497307441838185 889420403130803486 887773296767104352 272588988734184089 900854413164191389 306838570888252671 321818592757748092 632312861733842235 590425060048634753 921705179835679834 711775852688052272 ...```
view   save

correct output
```7 2 2 0 9 7 7 2 0 4 0 3 0 5 9 9 3 1 2 7 ...```
view   save

user output
```7 2 2 0 9 7 7 2 0 4 0 3 0 5 9 9 3 1 2 7 ...```
view   save