【AtCoder】ABC 083B - Some Sums
N,A,B=[int(i) for i in input().split()]
if 1<=A<=36 and 1<=B<=36 and A<=B:
num_list=[]
for x in range(10):
for y in range(10):
num=10*x+y
if 1<=num<=N and A<=(x+y)<=B:
num_list.append(num)
print(sum(num_list))
else:
print(0)
なぜWAになるのか?あー、整数は二桁だと思ってました。
N,A,B=[int(i) for i in input().split()]
sum_list=[]
for x in range(1,N+1):
#万の位
a=x//10000
#千の位
b=(x%10000)//1000
#百の位
c=((x%10000)%1000)//100
#10の位
d=(((x%10000)%1000)%100)//10
#1の位
e=(((x%10000)%1000)%100)%10
if A<=(a+b+c+d+e)<=B:
sum_list.append(x)
print(sum(sum_list))
かなりめんどくさい…と解説を見たら基数変換していました。
N,A,B=[int(i) for i in input().split()]
def findsum0fdigit(n):
sum=0
while n>0:
sum+=n%10
n//=10
return sum
find_list=[]
for x in range(1,N+1):
if A<=findsum0fdigit(x)<=B:
find_list.append(x)
print(sum(find_list))
この記事が気に入ったらサポートをしてみませんか?