| Task: | Kyselyt |
| Sender: | Shrike |
| Submission time: | 2017-10-03 10:56:13 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | TIME LIMIT EXCEEDED | 0 |
| #2 | TIME LIMIT EXCEEDED | 0 |
| #3 | TIME LIMIT EXCEEDED | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | TIME LIMIT EXCEEDED | -- | 1 | details |
| #2 | TIME LIMIT EXCEEDED | -- | 2 | details |
| #3 | TIME LIMIT EXCEEDED | -- | 3 | details |
Code
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
ll
decade(ll n)
{
ll sum;
sum = 0;
for (int i = 1; i < 1000000; i++) {
if (sum + i*9*pow(10.0, i-1) > n)
return i;
else
sum += i*9*pow(10.0, i-1);
}
return 0;
}
ll
nnum(ll dec, ll nth)
{
return (ll)(pow(10.0, (int)dec-1)-1+nth);
}
ll
sums(ll decade)
{
ll sum;
sum = 0;
for (int i = 1; i < decade; i++)
sum += i*9*pow(10.0, i-1);
return sum;
}
int dig(int a, int b) {
int i, digit;
digit = 1;
for(i = b-1; i > 0; i++)
digit = digit*10;
digit = (a/digit) % 10;
return digit;
}
int
main(int argc, char **argv)
{
int q;
cin >> q;
ll qs[q];
for (int i = 0; i < q; i++) {
cin >> qs[i];
}
for (int i = 0; i < q; i++) {
ll inth, nth, dec, s, sm, num;
dec = decade(qs[i]);
s = sums(dec);
sm = qs[i] - s;
nth = (ll)ceil((double)sm/(double)dec);
inth = nth % dec;
num = nnum(dec, nth);
cout << dig((int)num, inth+1) << endl;
}
return 0;
}
Test details
Test 1
Group: 1
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 582 214 723 273 ... |
| correct output |
|---|
| 0 1 7 7 6 ... |
| user output |
|---|
| (empty) |
Test 2
Group: 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 615664 916441 627600 279508 ... |
| correct output |
|---|
| 1 2 3 2 2 ... |
| user output |
|---|
| (empty) |
Test 3
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 672274832941907421 260504693279721732 646999966092970935 100853063389774434 ... |
| correct output |
|---|
| 7 2 2 0 9 ... |
| user output |
|---|
| (empty) |
