Code Submission Evaluation System Login

# 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-03 18:03:41100
2017-10-03 18:01:180
2017-10-03 15:02:400
 Task: Kyselyt Sender: Olli Submission time: 2017-10-03 18:03:41 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.04 / 1.00 1 details #2 ACCEPTED 0.04 / 1.00 2 details #3 ACCEPTED 0.05 / 1.00 3 details

## Code

```#include <iostream>
#include <vector>

using namespace std;
typedef long long ll;

ll power(ll a, ll b) {
if(b == 0) {
return 1;
}
if(b%2 == 0) {
ll c = power(a, b/2);
c = c*c;
return c;
}
ll c = power(a,b - 1);
return a * c;
}

int main() {
int q;
cin >> q;
for(int a = 1; a <= q; a++) {
ll k;
cin >> k;
ll digitsCurrently = 1;
ll amountOfNumbers = 9;
ll totalAmountOfDigits = 9;
//Determine the amount of digits in the number the k:th digit is in

while(totalAmountOfDigits < k) {
digitsCurrently++;
amountOfNumbers *= 10;
totalAmountOfDigits += digitsCurrently*amountOfNumbers;
}
ll smallerNumberDigits = totalAmountOfDigits - digitsCurrently*amountOfNumbers;

//Stop caring about the small numbers before the numbers with correct amount of digits. Use zero-indexing.
k = k - smallerNumberDigits - 1;
//Determine the location of the k:th digit
ll spotInNumber = k%digitsCurrently;
ll theNumber = k/digitsCurrently + power(10, digitsCurrently - 1);
//Break theNumber into digits
vector<int> digitsOfTheNumber;
while(theNumber > 0) {
digitsOfTheNumber.push_back(theNumber%10);
theNumber /= 10;
}
//Print the spotInNumber:th digit. Note that digitsOfTheNumber contains the digits in reverse
cout << digitsOfTheNumber[digitsOfTheNumber.size() - (spotInNumber + 1)] << "\n";

}
}

```

## 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