无尽的石头#蓝桥杯

3766、无尽的石头

#include
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
using namespace std;
const int N = 1000000;
vector<int> a(N+1,-1);
int sm(int x){
	int s=0;
	while(x){
		s+=(x%10);
		x/=10;
	}
	return s;
}
int main(){
	IOS;
	int t;cin>>t;
	a[1]=0;
	for(int i=1;i<=N;i++){
		if(a[i]==-1)continue;
		int x=i+sm(i);
		if(x>N)break;//大于1e6的话就不再查询了
		a[x]=a[i]+1;//a[i+sm(i)]=a[i]+1
	}
	while(t--){
		int n;cin>>n;
		cout<<a[n]<<"\n";
	}
	return 0;
}

你可能感兴趣的:(C/C++备战蓝桥杯,蓝桥杯,c++)