PS
백준 10824번 C++ 네 수
mtoc
2019. 6. 7. 17:55
네 수
https://www.acmicpc.net/problem/10824
네 자연수 A, B, C, D가 주어진다. 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성하시오.
두 수 A와 B를 합치는 것은 A의 뒤에 B를 붙이는 것을 의미한다. 즉, 20과 30을 붙이면 2030이 된다.
이게 정답률이 37퍼?
이유가 다 있는 거다.
입력 조건을 무시하고 풀면 이렇게 된다.
첫째 줄에 네 자연수 A, B, C, D가 주어진다. (1 ≤ A, B, C, D ≤ 1,000,000)
이 조건을 무시하고 그냥 풀었을 때, 만약 백만을 이어 붙이게 되면
10000001000000이 되는데, 이는 stoi로 변환했을 때 범위를 초과하므로(int로 변환) 런타임 에러가 날 수밖에 없다.
저 조건만 주의해서 풀어주자.
나는 unsigned long long을 택했는데 그냥 long long써도 된다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <iostream> #include <math.h> using namespace std; int main() { string arr[4]; for(int i=0; i<4; i++) { cin>>arr[i]; } unsigned long long a, b; a=stoi(arr[0])*pow(10, arr[1].size())+stoi(arr[1]); b=stoi(arr[2])*pow(10, arr[3].size())+stoi(arr[3]); cout<<a+b; return 0; } | cs |