안녕하세요. 오늘은 영감을 얻을거예요.
https://www.acmicpc.net/problem/16715
2부터 N까지 다 봅시다.
sum(N,x)를 N을 x진법으로 표현했을 때의 각 자릿수의 합이라고 정의합시다.
그러면 sum(N,x) (2<=x<=N)의 최댓값을 구해주면 됩니다.
#include <iostream>
using namespace std;
int sum(int N, int x)
{
int ans = 0;
while (N)
{
ans += N % x;
N /= x;
}
return ans;
}
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
int mx = 0, p = 0, N, i;
cin >> N;
for (i = 2; i <= N; i++)
{
int SUM = sum(N, i);
if (SUM > mx)
{
mx = SUM;
p = i;
}
}
cout << mx << ' ' << p;
}
감사합니다.