Hello, I can’t seem to understand why this code is giving Runtime Error:
The problem is CHFINVNT Problem - CodeChef.
This code runs the testcases just fine.
import math
t = int(input())
for _ in range(t):
n,p,k = map(int,input().split(' '))
freq_leftovers = [0 for i in range(0, k)]
for j in range(0,n):
freq_leftovers[j%k]+=1
ans=0
if p%k != 0:
for l in range(0, p%k):
ans+=freq_leftovers[l]
print(ans+math.floor(p/k)+1)
else:
print(ans+math.floor(p/k)+1)
Looking at the data range, you are trying to create a list of size 1e9, which gives the RTE.
1 Like
Wow that’s true, I did not think of that! Thank you!
The code you’ve provided is for a problem called “Chef and Bulb Invention” and is trying to determine the number of bulbs that can be made from a given number of leftovers.
The code seems to be mostly correct, but there is an error which is causing it to give a runtime error.
The error is in the first for loop where it is iterating from 0 to n, but it should be iterating from 0 to n-1. The reason is that the index of the list starts from 0 and the last index will be n-1.
You should change the line for j in range(0,n):
to for j in range(0,n-1):
this will fix the issue and the code should work as expected.
Also, there is another issue in the code, the variable freq_leftovers
is defined with [0 for i in range(0, k)]
which is causing it to have k element but the needed length is k-1. The reason is that the element with the index k-1 is missing.
You should change the line freq_leftovers = [0 for i in range(0, k)]
to freq_leftovers = [0 for i in range(0, k-1)]
.