문제
리뷰
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 |