cses

cses solutions in pure c
git clone git://git.superpozycja.net/cses
log | files | refs

s.c (600B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <stdint.h>
      5 
      6 int solve()
      7 {
      8 	uint64_t acc;
      9 	uint64_t k;
     10 	uint64_t n;
     11 	uint64_t p;
     12 	uint64_t b;
     13 	uint64_t d;
     14 	int i;
     15 	int j;
     16 
     17 	scanf("%llu", &k);
     18 
     19 	if (k < 10) {
     20 		printf("%llu\n", k);
     21 		return 0;
     22 	}
     23 
     24 	n = 9;
     25 	acc = 0;
     26 	b = 1;
     27 
     28 	for (i = 1; i < 100; i++, n *= 10) {
     29 		acc += i * n;
     30 		if (k <= acc)
     31 			break;
     32 		b *= 10;
     33 	}
     34 
     35 	p = (k - (acc - (i *n))) - 1;
     36 	n = b + (p / i);
     37 	d = p % i;
     38 
     39 	for (j = 0; j < i - d - 1; j++)
     40 		n/=10;
     41 
     42 	printf("%llu\n", n % 10);
     43 
     44 	return 0;
     45 }
     46 
     47 int main()
     48 {
     49 	int t;
     50 	scanf("%d", &t);
     51 	while (t--)
     52 		solve();
     53 }