https://www.acmicpc.net/problem/1975
문제
> 어떤 수 N에 대해 N을 2진법, 3진법..100만1진법 등으로 변환했을때 마지막자리에 연속되는 0의 개수를 모두 더해라.
접근
N에 대해 N진수까지 반복하며 N진수로 변환하는 과정을 한다. 연손된 0의 개수를 세어야 하므로 0이 연속되지않으면 지금까지 나온 0의 개수를 저장하고 다음 진수로 넘어간다.
문제해결
> 입력받은 N에 대해 N진수 이상은 N이 그대로 나오기 때문에 N진수 까지만 각각 보면 된다.
> 연속된 0의 개수를 얻어야하므로 진수 변환 시 0이 나올때를 조건으로 while문을 돌린다.
> 0이 나오면 cnt를 누적하고 아니면 다음 진수로 넘어가 반복한다.
> 총 cnt값을 출력한다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T, N;
cin >> T;
while (T--)
{
cin >> N;
int cnt = 0;
for (int i = 2; i <= N; i++)
{
int t = N;
while (t % i == 0)
{
cnt++;
t /= i;
}
}
cout << cnt << '\n';
}
}

후기
문제가 2진수 0으로 끝, 3진수 0으로 끝, 4진수 1로끝 5진수 0으로끝...이런식이면 답이 2 인줄 알았는데 각 진수마다 연속된 0의 개수를 더하는거였다. 문제 이해를 잘 해보자