문제

네 수 백준 10824번


리뷰

10 과 20 을 이어붙여서 1020가 된다면, 1000 + 20 과도 같다.

따라서 20의 자리 수 만큼(2만큼) 10에 10을 2번 곱해주면 1000이 된다.

A, B, C, D 를 입력받는데, B와 D의 자리수만 알면 된다.

    while(tempB > 0){ // B의 자리수 센다
        tempB /= 10;
        B_len++;
    }

B의 자리수를 알아냈으면, pow() 함수를 이용해서 10을 2번 곱해준다.

그리고 A에 더한다.

A = A * pow(10, B_len) + B;

문제해결 과정

pow() 함수를 쓸 때는 반드시 cmath 를 include 해 줘야 한다!

안그러면 컴파일 에러가 난다...

(1 ≤ A, B, C, D ≤ 1,000,000) 숫자의 크기가 크다. 도움이 된 질문게시판 글

네 수 모드 100만이면, 답이 int 형의 범위를 넘는다. 따라서 long long 자료형으로 선언해야 한다.


코드

#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;

// 10824 네 수 

long long A, B, C, D;
long long answer;

int main(void){

    cin >> A >> B >> C >> D;

    int B_len=0, D_len = 0;
    long long tempB = B, tempD = D;

    while(tempB > 0){ // B의 자리수 센다
        tempB /= 10;
        B_len++;
    }

    while(tempD > 0){ // D의 자리수 센다
        tempD /= 10;
        D_len++;
    }

    A = A * pow(10, B_len) + B;
    C = C * pow(10, D_len) + D;

    answer = A+C;

    cout << answer;

    return 0;
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

문자열 분석 백준 10820번  (0) 2020.08.27
접미사 배열 백준 11656번  (0) 2020.08.27
ROT13 백준 11655  (0) 2020.08.27
에디터 백준 1406번 c++  (0) 2020.08.26
스택 수열 백준 1874번  (0) 2020.08.26

+ Recent posts