Harryxun/GPT-100-sft-dataset huggingface dataset:
Problem p02688 (python)

Fixed submission:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
sys.setrecursionlimit(10**7)
from pprint import pprint as pp
from pprint import pformat as pf

import math
#from sortedcontainers import SortedList, SortedDict, SortedSet # no in atcoder
import bisect


if __name__ == '__main__':
    any_haver = set()
    num_nusuke, num_treat_type = list(map(int, input().split()))
    for i in range(num_treat_type):
        _ = int(input())
        treat_haver = list(map(int, input().split()))
        for nusuke_id in treat_haver:
            any_haver.add(nusuke_id)
    # check
    count_not_have = 0
    for nusuke_id in range(1, num_nusuke + 1):
        #print('nusuke_id') # debug
        #print(nusuke_id) # debug
        if nusuke_id not in any_haver:
            count_not_have += 1
    #print('count_not_have') # debug
    #print(count_not_have) # debug
    print(count_not_have)



    #print('\33[32m' + 'end' + '\033[0m') # debug

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
sys.setrecursionlimit(10**7)
from pprint import pprint as pp
from pprint import pformat as pf

import math
#from sortedcontainers import SortedList, SortedDict, SortedSet # no in atcoder
import bisect


if __name__ == '__main__':
    any_haver = set()
    num_nusuke, num_treat_type = list(map(int, input().split()))
    d_for_loop = int(input())
    for i in range(d_for_loop):
        treat_haver = list(map(int, input().split()))
        for nusuke_id in treat_haver:
            any_haver.add(nusuke_id)
    # check
    count_not_have = 0
    for nusuke_id in range(1, num_nusuke + 1):
        #print('nusuke_id') # debug
        #print(nusuke_id) # debug
        if nusuke_id not in any_haver:
            count_not_have += 1
    #print('count_not_have') # debug
    #print(count_not_have) # debug
    print(count_not_have)



    #print('\33[32m' + 'end' + '\033[0m') # debug
Problem p02693 (python)

Fixed submission:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pprint import pprint as pp
from pprint import pformat as pf

def solve():
    k = int(input())
    a, b = map(int, input().split())
    v = k
    while not (v > b):
        if a <= v <= b:
            print("OK")
            return 0
        v += k
    print("NG")
    return 0


if __name__ == '__main__':
    solve()

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pysnooper # @pysnooper.snoop()
from pprint import pprint as pp
from pprint import pformat as pf

def solve():
    k = int(input())
    a, b = map(int, input().split())
    v = k
    while not (v > b):
        if a <= v <= b:
            print("OK")
            return 0
        v += k
    print("NG")
    return 0


if __name__ == '__main__':
    solve()

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pysnooper # @pysnooper.snoop()
from pprint import pprint as pp
from pprint import pformat as pf

def solve():
    k = int(input())
    a, b = map(int, input().split())
    v = k
    while not (v > b):
        if a <= v <= b:
            print("OK")
            return 0
        v += k
    print("NG")
    return 0


if __name__ == '__main__':
    solve()

    print('\33[32m' + 'end' + '\033[0m')

Buggy submission (verdict: Runtime Error):
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pysnooper # @pysnooper.snoop()
from pprint import pprint as pp
from pprint import pformat as pf

def solve():
    k = int(input())
    a, b = map(int, input().split())
    v = k
    while not (v > b):
        if a <= v <= b:
            print("OK")
            return 0
        v += k
    print("NG")
    return 0


if __name__ == '__main__':
    solve()

    print('\33[32m' + 'end' + '\033[0m')
Problem p03135 (python)

Fixed submission:
x,y = map(int,input().split())
print(x/y)

Buggy submission (verdict: Runtime Error):
x, y = int(input())
print(x/y)

Buggy submission (verdict: Runtime Error):
x, y = int(input())
print(y/x)
Problem p02726 (python)

Fixed submission:
n, x, y = map(int, input().split())
x -= 1
y -= 1

k = [0 for _ in range(n)]
for i in range(n):
    for j in range(i + 1, n):
        dist = min(j-i, abs(x-i)+1+abs(j-y))
        if dist < n:
            k[dist] += 1
for i in range(1, len(k)):
    print(k[i])

Buggy submission (verdict: Runtime Error):
n, x, y = map(int, input().split())
x -= 1
y -= 1

k = [0 for _ in range(n)]
for i in range(n):
    for j in range(i + 1, n):
        dist = min(j-i, abs(x-i)+1+abs(j-y))
        if dist < n:
            k[dist] += 1
[for i in range(1, len(k)):
    print(k[i])]
Problem p03077 (python)

Fixed submission:
N = int(input())
n = [int(input()) for _ in range(5)]
min_n = min(n)
ans = N // min_n + 4 + (1 if (0 != N % min_n) else 0)
print(ans)

Buggy submission (verdict: Runtime Error):
N = int(input())
n = [int(input()) for _ in range(N)]
min_n = min(n)
print(N // min_n + (1 if (0 != N % min_n) else 0) + N - 1)
Problem p03207 (python)

Fixed submission:
n = int(input())
p = [int(input()) for _ in range(n)]
p.sort(reverse=True)
sum = int(p[0] / 2)
for i in range(1, len(p)):
	sum += p[i]
print(sum)

Buggy submission (verdict: Runtime Error):
p = []
for i in range(int(input())):
    p.append(int(input()))

p.sort().reverse()
total = int(p[0] * 0.5)
for i in range(1, len(p)):
    total += p[i]
print(total)
Problem p02629 (python)

Fixed submission:
n=int(input())
ei="$abcdefghijklmnopqrstuvwxyz"
fla=[]
flaa=[0]
ans=""
cnt=2

for i in range(1,20):
    fla.append(26**i)
    flaa.append(flaa[i-1]+26**i)
for i in range(20):
    if n<=flaa[i]:
        k=i
        break
# print(flaa,k)
if k==1:
    print(ei[n])
    exit()

b=n-flaa[k-1]
# print(b)
while len(ans)!=k-1:
    for i in range(1,27):
        if fla[k-cnt]*i>=b:
            ans+=str(ei[i])
            b-=fla[k-cnt]*(i-1)
            cnt+=1
            # print(b)
            break
ans+=str(ei[b])

print(ans)

Buggy submission (verdict: Runtime Error):
n=int(input())
ei="$abcdefghijklmnopqrstuvwxyz"
fla=[]
flaa=[0]
ans=""
cnt=2

for i in range(1,11):
    fla.append(26**i)
    flaa.append(flaa[i-1]+26**i)
for i in range(10):
    if n<=flaa[i]:
        k=i
        break
# print(flaa,k)
if k==1:
    print(ei[n])
    exit()

b=n-flaa[k-1]
# print(b)
while len(ans)!=k-1:
    for i in range(1,27):
        if fla[k-cnt]*i>=b:
            ans+=str(ei[i])
            b-=fla[k-cnt]*(i-1)
            cnt+=1
            # print(b)
            break
ans+=str(ei[b])

print(ans)
Problem p02726 (python)

Fixed submission:
N,x,y=map(int,input().split())

ln=[0]*(N-1)

for i in range(1,N+1):
    for j in range(i+1,N+1):
        d2=N
        d=j-i
        if j <= x:
            pass
        elif i<=x and j <=y:
            d2=y-j+1+x-i
        elif j<=y:
            d2=y-j+1+i-x
        elif i<=x and j>=y:
            d2=x-i+j-y+1
        elif j>=y:
            d2=j-y+1+i-x

        if d2 < d:
            d=d2
        
        ln[d-1]+=1

for i in ln:
    print(i)

Buggy submission (verdict: Runtime Error):
N,x,y=map(int,input().split())

tri=y-x+1
linear=x+N-y+1

nl=[0]*(N-1)
# triangle is gusu
if tri%2==0:
    # triangle
    for i in range(tri//2-1):
        nl[i]+=tri

    nl[i+1]+=tri//2

    # before,x,y,after
    for i in range(linear-1):
        if i==0:
            nl[i]+=min(0,linear-(i+1)-1)
        else:
            nl[i]+=linear-(i+1)
    
    # before,tri
    half_tri=(tri-2)//2
    mind=min(x-1,half_tri)
    maxd=max(x-1,half_tri)
    for i in range(mind+2,maxd+2):
        nl[i]+=mind
    for i in range(mind+3,maxd+3):
        nl[i]+=mind

    mind=min(N-y,half_tri)
    maxd=max(N-y,half_tri)
    for i in range(mind+2,maxd+2):
        nl[i]+=mind
    for i in range(mind+3,maxd+3):
        nl[i]+=mind

elif tri%2==1:
    # triangle
    for i in range(tri//2):
        nl[i]+=tri

    # before,x,y,after
    for i in range(linear-1):
        if i==0:
            nl[i]+=min(0,linear-(i+1)-1)
        else:
            nl[i]+=linear-(i+1)
    
    # before,tri
    half_tri=(tri-2)//2
    mind=min(x-1,half_tri)
    maxd=max(x-1,half_tri)
    for i in range(mind+2,maxd+2):
        nl[i]+=mind
    
    half_tri=min(0,half_tri-1)
    mind=min(x-1,half_tri)
    maxd=max(x-1,half_tri)
    for i in range(mind+3,maxd+3):
        nl[i]+=mind

    mind=min(N-y,half_tri)
    maxd=max(N-y,half_tri)
    for i in range(mind+2,maxd+2):
        nl[i]+=mind

    half_tri-=1
    mind=min(N-y,half_tri)
    maxd=max(N-y,half_tri)
    for i in range(mind+3,maxd+3):
        nl[i]+=mind

for s in nl:
    print(s)
Problem p02771 (python)

Fixed submission:
a,b,c=input().split()

if a==b and a!=c:
    print("Yes")
elif a==c and a!=b:
    print("Yes")
elif b==c and a!=b:
    print("Yes")
else:
    print("No")

Buggy submission (verdict: Runtime Error):
a,b,c=input()

if a==b and a!=c:
    print("Yes")
elif a==c and a!=b:
    print("Yes")
elif b==c and a!=b:
    print("Yes")
else:
    print("No")
Problem p02792 (python)

Fixed submission:
N=int(input())

a_list= [[0 for i in range(10)] for j in range(10)]
b_list= [[0 for i in range(10)] for j in range(10)]
for i in range(N+1):
    a=int(str(i)[0])
    b=int(str(i)[-1])
    a_list[a][b]+=1
    b_list[b][a]+=1

count=0
for i in range(1,10):
    for j in range(1,10):
        count+=a_list[i][j]*b_list[i][j]

print(count)

Buggy submission (verdict: Runtime Error):
from functools import reduce
import fractions

def lcm_base(x, y):
    return (x * y) // fractions.gcd(x, y)

def lcm_list(numbers):
    return reduce(lcm_base, numbers, 1)


N=int(input())
a=list(map(int,input().split()))

kobai=lcm_list(a)

sumN=0
for i in a:
    sumN+=int(kobai/i)
   
sumN=int(sumN%(1e9+7))

print(sumN)
Problem p02831 (python)

Fixed submission:
import fractions

a,b=map(int,input().split(" "))

print(a * b // fractions.gcd(a, b))

Buggy submission (verdict: Runtime Error):
import math

a,b=map(int,input().split(" "))

print(a * b // math.gcd(a, b))
Problem p03041 (python)

Fixed submission:
N, K = map(int, input().split())
S = input()

if K == 1:
    S = S[0].lower() + S[1:]
elif K == N:
    S = S[:-1] + S[N-1].lower()
else:
    S = S[:K-1] + S[K-1].lower() + S[K:]
print(S)

Buggy submission (verdict: Runtime Error):
N, K = map(int, input().split())

for i in range(N):
    if 2**i > N:
        a = i-1
        b = N - 2**a
        break
for j in range(K):
    if 2**j > K:
        c = j-1
        d = K - 2**c
        break

if N <= K:
    print((2**(2*a-c+1)+2**(-c)+3*2**(a-c+1)*b)/3*N)
else:
    print((2**(c+1)+2**(-c)+3*2*b)/*3N + (N-K+1)/N)
Problem p02659 (python)

Fixed submission:
import math

A,B = input().split()
C = int(A)*int(float(B)*1000)
print(math.floor(C//1000))

Buggy submission (verdict: Runtime Error):
A,B = input().split()
B2 = float(B)*100
print(int(A*B2))
Problem p02792 (python)

Fixed submission:
N = int(input())
K = len(str(N))
MS = int(str(N)[0])
ML = int(str(N)[-1])
res = 0

for i in range(1, N+1):
    AS = int(str(i)[0])
    AL = int(str(i)[-1])

    if AL == 0:
        continue

    for k in range(1, K+1):
        if k == 1:
            if AS == AL and AS <= N:
                res += 1
            continue
        if k == 2:
            if int(str(AL) + str(AS)) <= N:
                res += 1
            continue
        if k < K:
            res += 10 ** (k - 2)
            continue
        if k == K:
            if AL > MS:
                continue
            if AL < MS:
                res += 10 ** (k - 2)
                continue
            if AL == MS:
                if AS <= ML:
                    res += (int(str(N)[1:])+9) // 10
                    continue
                else:
                    res += (int(str(N)[1:])) // 10
                    continue


print(res)

Buggy submission (verdict: Runtime Error):
N = int(input())
K = len(str(N))
MS = int(str(N)[0])
ML = int(str(N)[-1])
res = 0

for i in range(1, N+1):
    AS = int(str(i)[0])
    AL = int(str(i)[-1])

    if AL == 0:
        continue

    for k in range(1, K+1):
        if k == 1:
            if AS == AL and AS <= N:
                res += 1
            continue
        if k == 2:
            if int(str(AL) + str(AS)) <= N:
                res += 1
            continue
        if k < K:
            res += 10 ** (k - 2)
            continue
        if k == K:
            if AL > MS:
                continue
            if AL < MS:
                res += 10 ** (k - 2)
                continue
            if AL == MS:
                if AS < ML:
                    res += int(str(N)[1:] + 9) // 10
                    continue
                else:
                    res += (int(str(N)[1:])) // 10
                    continue


print(res)

Buggy submission (verdict: Runtime Error):
N = int(input())
K = len(str(N))
MS = int(str(N)[0])
ML = int(str(N)[-1])
res = 0

for i in range(1, N+1):
    AS = int(str(i)[0])
    AL = int(str(i)[-1])

    if AL == 0:
        continue

    for k in range(1, K+1):
        if k == 1:
            if AS == AL and AS <= N:
                res += 1
            continue
        if k == 2:
            if int(str(AL) + str(AS)) <= N:
                res += 1
            continue
        if k < K:
            res += 10 ** (k - 2)
            continue
        if k == K:
            if AL > MS:
                continue
            if AL < MS:
                res += 10 ** (k - 2)
                continue
            if AL == MS:
                if AS < ML:
                    res += int(str(N)[1:] + 9) // 10
                    continue
                else:
                    if int(str(N)[1:]) >= AS:
                        res += (int(str(N)[1:]) + 9) // 10
                    continue


print(res)
Problem p02860 (python)

Fixed submission:
N = int(input())
S = input()

if N % 2 == 1:
    print('No')
else:
    half = int(N/2)
    if S[:half] == S[half:]:
        print('Yes')
    else:
        print('No')

Buggy submission (verdict: Runtime Error):
N = int(input())
S = input()

if N % 2 === 1:
    print('No')
elif S[:N/2] == S[N/2:]:
    print('Yes')
else:
    print('No')
Problem p02862 (python)

Fixed submission:
def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod

mod = 10**9+7 #出力の制限
N = 10**6
g1 = [1, 1] # 元テーブル
g2 = [1, 1] #逆元テーブル
inverse = [0, 1] #逆元テーブル計算用テーブル

for i in range( 2, N + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )



X, Y = map(int, input().split())

if not (X+Y) % 3 == 0:
    print(0)
else:
    # 2n + m = X
    # n + 2m = Y
    n = (Y - 2*X) // -3
    m = X - (2 * n)
    if n < 0 or m < 0:
        print(0)
    else:
        print(cmb(n+m, n, mod))

Buggy submission (verdict: Runtime Error):
mod = 10**9+7
fac = [1, 1]
finv = [1, 1]
inv = [0, 1]


def init(n):
    for i in range(2, n):
        fac.append(fac[-1] * i % mod)
        inv.append(-inv[mod % i] * (mod // i) % mod)
        finv.append(finv[-1] * inv[-1] % mod)


def com(n, k, mod):
    if n < 0 or k < 0 or n < k:
        return 0
    return fac[n] * (finv[k] * finv[n - k] % mod) % mod


X, Y = map(int, input().split())

if not (X+Y) % 3 == 0:
    print(0)
else:
    n = (Y - 2 * X) // -3
    m = X - (2 * n)
    if n < 0 or m < 0:
        print(0)
    else:
        init(n + m)
        print(com(n + m, n, mod))
Problem p02682 (python)

Fixed submission:
def main():
    A, B, _, K = map(int, input().split())
    if A > K:
        print(K)
        quit()
    print(A - max([0, K - A - B]))


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
def main():
    A, B, C, K = map(int, input().split())
    li = [1] * A
    li += ([0] * B)
    li += ([-1] * C)
    print(sum(li[:K]))


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
def main():
    A, B, C, K = map(int, input().split())
    li = ([1] * A) + ([0] * B) + ([-1] * C)
    print(sum(li[:K]))


if __name__ == "__main__":
    main()
Problem p02860 (python)

Fixed submission:
def main():
    N = int(input())
    S = input()
    if N % 2 == 1:
        print("No")
        quit()
    n = N // 2
    yesno = "Yes" if S[:n] == S[n:] else "No"
    print(yesno)


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
import sys


def main():
    N = int(input())
    S = input()
    if N % 2 == 1:
        print("No")
        sys.exit()
    n = N / 2
    yesno = "Yes" if S[:n] == S[n:] else "No"
    print(yesno)


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
def main():
    N = int(input())
    S = input()
    if N % 2 == 1:
        print("No")
        quit()
    n = N / 2
    yesno = "Yes" if S[:n] == S[n:] else "No"
    print(yesno)


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
def main():
    N = int(input())
    S = input()
    if N % 2 == 1:
        print("No")
        quit()
    yesno = "Yes" if S[:N / 2] == S[N / 2:] else "No"
    print(yesno)


if __name__ == "__main__":
    main()

Buggy submission (verdict: Runtime Error):
def main():
    N = int(input())
    S = input()
    if N % 2 == 0:
        print("No")
        quit()
    yesno = "Yes" if S[:N / 2] == S[N / 2:] else "No"
    print(yesno)


if __name__ == "__main__":
    main()
Problem p02723 (python)

Fixed submission:
S = input()  # ここで標準入力

if S[2] == S[3] and S[4] == S[5]:
    print('Yes')
else:
    print('No')

Buggy submission (verdict: Runtime Error):
N, x, y = map(int, input().split())

out = [0] * (N)

for i in range(1,N):
    for j in range(i+1,N+1):
        # i,jの距離を求める ３パーターンのうち一番短いパターン
        # i→jパターン abs(j-i)
        # i→x→y→jパターン abs(i-x)+1+abs(j-y)
        # i→y→x→jパターン abs(i-y)+1+abs(j-x)
        dist = min(abs(j-i), abs(i-x)+1+abs(j-y), abs(i-y)+1+abs(j-x))
        out[dist] += 1

for i in range(1,N):
    print(out[i])
Problem p02831 (python)

Fixed submission:
# -*- coding:utf-8 -*-

a, b = map(int, input().split())

c_a = 1

while True:
    if a*c_a%b == 0:
        break
    c_a += 1

print(a*c_a)

Buggy submission (verdict: Runtime Error):
# -*- coding:utf-8 -*-
import math

a,b = map(int, input().split())

def lcm(x, y):
    return (x * y) // math.gcd(x, y)
print(lcm(a, b))
Problem p03013 (python)

Fixed submission:
# -*- coding: utf-8 -*-

n, m = map(int, input().split())

stairs = [i for i in range(1, n+1)]
a = [0 for _ in range(m)]
for i in range(m):
  a[i] = int(input())
a = set(a)
  
mod = 10**9+7
dp = [0] * (n+1)
dp[0] = 1

#print(test_a)
for i in range(1, n+1):
    if i in a:
        continue
    dp[i] = dp[i] + dp[i-1]
    if i > 1:
        dp[i] = dp[i] + dp[i-2]

#print(dp)
print(dp[-1]%mod)

Buggy submission (verdict: Runtime Error):
# -*- coding: utf-8 -*-

n, m = map(int, input().split())
a = [int(input()) for _ in range(m)]

mod = 10**9+7

dp = [0] * (n+1)
dp[0] = 1
if 1 in a:
    dp[1] = 0
else:
    dp[1] = 1

for i in range(2, n+1):
    if i not in a:
        dp = dp[i-1] + dp[i-2]
        dp[i] = dp%mod
    else:
        dp[i] = 0

#print(dp)
print(dp[-1])
Problem p02659 (python)

Fixed submission:
import math
a,b=map(lambda x:x,input().split())
a=int(a)
for i in range(len(b)):
    if b[i]==".": b=int(b[:i]+b[i+1:]);break

print(a*b//100)

Buggy submission (verdict: Runtime Error):
import math
a,b=map(lambda x:x,input().split())
a=int(a)
b=int(round(b*100))
print(a*b//100)
Problem p02695 (python)

Fixed submission:
def cur(x):

    if len(x)<n+1:
        ans=0
        for i in range(x[-1],m+1):
            ans=max(ans,cur(x+[i]))
    else:
        ans=0
        for i in range(q):
            [a,b,c,d]=l[i]
            if x[b]-x[a]==c: ans+=d
    return ans

n,m,q=map(int,input().split())
l=[list(map(int,input().split())) for i in range(q)]
print(cur([1]))

Buggy submission (verdict: Runtime Error):
def cur(x):

    if len(x)<m+1:
        ans=0
        for i in range(x[-1],m+1):
            ans=max(ans,cur(x+[i]))
    else:
        ans=0
        for i in range(q):
            [a,b,c,d]=l[i]
            if x[b]-x[a]==c: ans+=d
    return ans

n,m,q=map(int,input().split())
l=[list(map(int,input().split())) for i in range(q)]
print(cur([1]))
Problem p02753 (python)

Fixed submission:
s=input()
print("Yes" if "A" in s and "B" in s else "No")

Buggy submission (verdict: Runtime Error):
import bisect
import sys
mod=998244353
n=int(input())
if n==1: print(2);sys.exit()

l=[list(map(int,input().split())) for _ in range(n)]
l=sorted(l)
x=[l[i][0] for i in range(n)]
d=[l[i][1] for i in range(n)]
dp=[[0,0] for _ in range(n)]
dp[n-1]=[1,1]

for i in range(n-2,-1,-1):
    dp[i][0]=dp[i+1][0]+dp[i+1][1]
    if x[i]+d[i]<=x[i+1]: dp[i][1]=dp[i][0]
    elif x[i]+d[i]<=x[i+1]+d[i+1]: dp[i][1]=dp[i+1][1]
    else:
        p=bisect.bisect_right(x,x[i]+d[i])-1
        dp[i][1]=min(dp[p][1],dp[i+1][1])
    dp[i]=[x%mod for x in dp[i]]

print(sum(dp[0])%mod)
Problem p02777 (python)

Fixed submission:
s,t=map(lambda x:x,input().split())
a,b=map(int,input().split())
if input()==s:
    print(a-1,b)
else: print(a,b-1)

Buggy submission (verdict: Runtime Error):
import math
import sys

comb=[0,0,0,1,3,6,10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 1326, 1378, 1431, 1485, 1540, 1596, 1653, 1711, 1770, 1830, 1891, 1953, 2016, 2080, 2145, 2211, 2278, 2346, 2415, 2485, 2556, 2628, 2701, 2775, 2850, 2926, 3003, 3081, 3160, 3240, 3321, 3403, 3486, 3570, 3655, 3741, 3828, 3916, 4005, 4095, 4186, 4278, 4371, 4465, 4560, 4656, 4753, 4851, 4950]
n=int(input())
k=int(input())
s=str(n)
L=len(s)

ans=0
if n<k:
    ans=0

elif k==1:
    for i in range(L):
        for a in range(1,10):
            if a*(10**i)<=n:
                ans+=1

elif k==2:
    for i in range(1,L):
        for j in range(i):
            for a in range(1,10):
                for b in range(1,10):
                    if a*(10**i)+b*(10**j)<=n: ans+=1


elif k==3 and L<4:
    for a in range(1,10):
        for b in range(1,10):
            for c in range(1,10):
                if a*100+b*10+c<=n: ans+=1

elif k==3 and L>=4:
    for i in range(L):
        ans+=comb[i]
    ans*=9**3
    ans+=comb[L]* 81 * (int(s[0])-1) #1桁目 1-int(s[0])-1
    if int(s[1])>0:
        ans+=comb[L-1]*81
        ans+=(L-2)*9*(int(s[1])-1)


    m=int(s[2:])

    for i in range(L-1):
        for a in range(1,10):
            if a*(10**i)<=m: ans+=1
                

print(ans)

Buggy submission (verdict: Runtime Error):
import math
import sys

comb=[0,0,0,1,3,6,10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105, 120, 136, 153, 171, 190, 210, 231, 253, 276, 300, 325, 351, 378, 406, 435, 465, 496, 528, 561, 595, 630, 666, 703, 741, 780, 820, 861, 903, 946, 990, 1035, 1081, 1128, 1176, 1225, 1275, 1326, 1378, 1431, 1485, 1540, 1596, 1653, 1711, 1770, 1830, 1891, 1953, 2016, 2080, 2145, 2211, 2278, 2346, 2415, 2485, 2556, 2628, 2701, 2775, 2850, 2926, 3003, 3081, 3160, 3240, 3321, 3403, 3486, 3570, 3655, 3741, 3828, 3916, 4005, 4095, 4186, 4278, 4371, 4465, 4560, 4656, 4753, 4851, 4950]
n=int(input())
k=int(input())
s=str(n)
L=len(s)

ans=0
if n<k:
    ans=0

elif k==1:
    for i in range(L):
        for a in range(1,10):
            if a*(10**i)<=n:
                ans+=1

elif k==2:
    for i in range(1,L):
        for j in range(i):
            for a in range(1,10):
                for b in range(1,10):
                    if a*(10**i)+b*(10**j)<=n: ans+=1


elif k==3 and L<4:
    for a in range(10):
        for b in range(10):
            for c in range(10):
                if a*100+b*10+c<=n: ans+=1

elif k==3 and L>=4:
    a=0
    while True:
        a+=1

    for i in range(L):
        ans+=comb[i]
    ans*=9**3
    ans+=comb[L]* 81 * (int(s[0])-1) #1桁目 1-int(s[0])-1
    if int(s[1])>0:
        ans+=comb[L-1]*81
        ans+=(L-2)*9*(int(s[1])-1)


    m=int(s[2:])

    for i in range(L-1):
        for a in range(1,10):
            if a*(10**i)<=m: ans+=1
                

print(ans)