【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))

この記事が気に入ったらサポートをしてみませんか?