본문 바로가기
CP, PS/BeakJoon

[백준/C++/Gold(5)] 28293 - 자릿수 구하기

by 리나그(ReenAG) 2023. 7. 25.
728x90
반응형
 

28293번: 자릿수

첫째 줄에 정수 $a$, $b$가 공백으로 구분되어 주어진다. $(1 \le a \le 10\,000; 1 \le b \le 10\,000\,000)$

www.acmicpc.net

본인이 해당 문제의 출제자가 아니며, 문제 자체에 대한 모든 사항은 위의 링크가 출처임을 명시합니다.

 

log10

 자릿수 구하기라는 뭔가 단순한 문구에 끌려서 왔는데… 생각보다 더 단순한 문제여서 당황했던 문제였다. 진짜 문제가 길지 않은 만큼 그냥 간단히 시작하겠다.

 

생각 :

은 그냥 고등학교의 log10(산술로그)만 떠올리면 8~90%는 해결되는 문제이다. 실제로 그 방법을 이용해서 구할 것이다.

코드 :

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    std::cout << std::fixed;
    int a, b;
    cin >> a >> b;
    
    long double result = log10(a) * b;

    cout << (long long)((long double)floor(result) + 1);

    return 0;
}

 

입력 받은 a, b를 이용해서 만든 수식 :

floor(log10(a) * b) + 1

다만 처음에 그냥 생각없이 이렇게 냈다가 "틀렸습니다"를 받았다.

왜인지 봤는데 소수점 출력이 문제여서 출력 형태를 고정하고 long doube → long long으로 명시적 형 변환을 해서 맞았다.

 

이게 왜 G5씩이나 하는지는 모르겠다. 느낌상 S4~3 정도가 적당해보이는데… 일단 여기까지 신경쓸 입장은 아니기에 이만 줄이겠다.

 

P.S

<로그인 필요!>

https://www.acmicpc.net/board/view/121273

 

글 읽기 - 이 문제를 풀 수 있게 바꿔봅시다.

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

이걸 보면 문제의 의도, 해석이 논란이 되고 있어 난도가 바뀔 것으로 보인다.

728x90
반응형