#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAX=1e6;
vector<ll> stones;
ll esum(ll x){
ll sum = 0;
while(x){
sum = sum+x%10;
x=x/10;
}
return sum;
}
void perp(){
stones.push_back(1);
stones.push_back(2);
while(1){
ll next = *--stones.end()+esum(*--stones.end());
if(next <= MAX){
stones.push_back(next);
}else{
break;
}
}
}
int main(){
perp();
int t;cin >> t;
while(t--){
int n;
cin >> n;
auto it = find(stones.begin(),stones.end(),n);
if(it != stones.end()){
cout << it-stones.begin() << '\n';
}else{
cout << -1 << '\n';
}
}
}
思路:运用vector自由数组来存储经过的点
运用自定义函数来求各个位数之和
运用find函数来查找是否存在n;
运用迭代器知识求出n的位置,即走了几步