https://www.acmicpc.net/problem/17427
처음에 짠 코드
def g(num):
total=0
for i in range(1,num+1):
total+=f(i)
return total
def f(num):
sum=0
for i in range(1,num+1):
if num%i==0:
sum+=i
return sum
n=int(input())
print(g(n))
시간초과 오류떠서
구글링으로 좀 참조했는데
참 간편하게 짤수있더라...
n=int(input())
sum=0
for i in range(1,n+1):
sum+=(n//i)*i
print(sum)
이건데 설명해보자면
g(6)=f(1)+f(2)+f(3)+f(4)+f(5)+f(6)이다
{1},{1,2},{1,3},{1,2,4},{1,5},{1,2,3,6}
1은 6개
2는 3개
3은 2개
4는 1개
5는 1개
6은 1개
반복문을 돌아서 (n//i)*i
i가 1이면 1이 나오는 횟수의 합
i가 2이면 2가 나오는 횟수의 합
...
이렇게 sum 에 누적시키면 답이나온다.