안녕하세요. 오늘은 자릿수를 세어볼 거예요.
https://www.acmicpc.net/problem/28293
a^b이 n자리 수이면 10^(n-1)<=a^b<10^n을 만족합니다. 이때 모든 항에 상용로그를 취해주면 n-1<=b log a < n이 됩니다. 이때 n-1은 b log a의 정수부분, n은 b log a의 정수부분 +1이므로 b log a의 정수부분 +1을 출력해주면 됩니다.
#include <iostream>
#include <cmath>
#define ll long long
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false); cin.tie(NULL);
double a, b;
cin >> a >> b;
double x = b * log10(a);
cout << (ll)(x)+1;
}
감사합니다.