【AOJ 2424】Kakezan
問題
ソースコード
#include <iostream> #include <string> #define rep(i,n) for(int i = 0 ; i < n ; i++) #define REP(i,a,n) for(int i = a; i < n ; i++) using namespace std; int calc(string s){ int max_v = -1000000; int len = s.length(); REP(i,1,len){ string s1 = s.substr(0,i); string s2 = s.substr(i); int mul = stoi(s1)*stoi(s2); max_v = max(max_v, mul); } if(max_v == stoi(s)) return -1; return max_v; } int solve(void){ string s; cin >> s; if(stoi(s) < 10) return 0; int cnt=0; while(true){ cnt++; int res = calc(s); if(res < 10) break; s = to_string(res); } return cnt; } int main(){ int n; cin >> n; rep(i,n){ cout << solve() << endl; } }
std::to_string()とstd::stoi()はC++11じゃないと使えないので注意。