第6题 累加和 时限:1s 空间:256m 【题目描述】
1、老师在黑板上写下一个正整数,记为X1。
2、删除X1的最后一位数字后,得到的正整数记为X2。
3、删除X2的最后一位数字后,得到的正整数记为X3。
。。。。
进行若干次操作后,剩下的正整数只有1位数字了,记为Xn。
令Y = X1 + X2 + X3 + ....+ Xn。
例如:老师刚开始在黑板写下的正整数是509,那么:
X1 = 509
X2 = 50
X3 = 5
那么此时的Y = 509+50+5 = 564。
现在给出Y,你的任务是求出X1。数据能保证对于Y,X1不会有多个解,如果找不到X1,那么输出-1。
【输入格式】f.in
一行,一个正整数Y。
【输出格式】f.out
一行,一个整数X1,或者输出-1。
输入样例
输出样例
样例解释
564
509
509+50+9=568
565
-1
137174210616796
123456789555123
【数据范围】
1、对于20%的数据,1 <= Y <= 1000000。
2、对于100%的数据,1 <= Y <= 1000000000000000000。
#include<bits/stdc++.h>
using namespace std;
long long sum,t,a,r;
int main() {
cin>>sum;
a=sum-sum/10;
r=a;
while(1) {
t=r;
while(t!=0) t/=10,a+=t;
if(a==sum) {
cout<<r;
break;
} else if(a<sum) r++,a=r;
else {
cout<<-1;
break;
}
}
return 0;
}