CSES - Datatähti 2018 alku - Results
Submission details
Task:Kyselyt
Sender:Hege
Submission time:2017-10-11 21:55:40 +0300
Language:Python3
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED25
#3ACCEPTED63
Test results
testverdicttimegroup
#1ACCEPTED0.10 s1details
#2ACCEPTED0.08 s2details
#3ACCEPTED0.08 s3details

Code

### KYSELYT (dt21k8-x(x-1)||x=10) ###

def infiniteSumCalculator(a):
	# we always haz to bear with magnitude of the number.
	mag = 1

	# spec haz a bug, this is only a hotfix

	# lol this do-while h4x again :D
	while True:
		# i dunno whats going on there but the shell shows it wurkz
		a -= 9*10**(mag-1)*mag
		if a <= 0:
			# counter the decrement ":D"
			a += 9*10**(mag-1)*mag
			break
		# i++ :D
		mag += 1

	a += mag-1
	## fix for the spec hotfix special case
	#if mag == 1:
	#	a -= 1
#
#	## second hotfix
#	#if mag == 2 and a == 1:
#	#	mag -=1
	#	a -= 1

	# lets just return this puke from shell
	return str(a // mag + 10**(mag-1) -1)[a % mag]

# what about one useless main() more
def main(a):
	pass

### just testing functions here ###

def concatenated(a):
	return "".join([str(i) for i in range(1,a)])

def massTest(n):
	q = concatenated(n)
	for i in range(n):
		try:
			b = infiniteSumCalculator(i+1)
			if q[i] != b:
				print(i, q[i], b, False)
		except Exception as e:
			print("{} {} {} {}: {}".format(i, q[i], b, e.__class__.__name__, e))

### testing site ends here ###

# lets escape this thing from pyyttons moduuls
if __name__ == "__main__":
	# this looks like a c-ish thing
	for i in range(int(input())):
		# and this is pyton
		print(infiniteSumCalculator(int(input())))

# remember: sometimes u can just prematurely optimize things
# very well but it makes very strange chewgum code. Even me
# cannot fully understand what is happenings in this file.

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: ACCEPTED

input
1000
672274832941907421
260504693279721732
646999966092970935
100853063389774434
...

correct output
7
2
2
0
9
...

user output
7
2
2
0
9
...