https://www.acmicpc.net/problem/1769
범위 잘못봐서 틀렸던 문제.
첫 입력을 문자열로 받아야 함에 유의하자.
첫 입력을 받아서 Y를 만들어 내면, Y의 범위는 900만 이하이므로
int범위 안에 저장할 수 있으니 오버플로우에 대해서는 걱정하지 않아도 된다.
나는 만든 Y를 다시 X에 저장하는 방법으로 구했다.
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin >> s;
int cnt = 0;
while(s.length() > 1){
cnt++;
int val = 0;
for(auto c : s) val += c-'0';
s = to_string(val);
}
cout << cnt << "\n";
if(s=="3" || s=="6" || s=="9") cout << "YES";
else cout << "NO";
return 0;
}
반응형