第1题 累加和
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。
输入格式
一行,一个正整数Y。
输出格式
一行,一个整数X1,或者输出-1。
输入/输出例子1
输入:
564
输出:
509
输入/输出例子2
输入:
565
输出:
-1
输入/输出例子3
输入:
137174210616796
输出:
123456789555123
样例解释
无
#include<bits/stdc++.h>
using namespace std;
long long y,x;
long long z(long long a){
long long s=a;
while(a>0)
{
s+=a/10;
a=a/10;
}
return s;
}
int main(){
cin>>y;
long long l=0,r=y;
while(l+1<r)
{
long long m=(l+r)/2;
long long yy=z(m);
if(yy==y)
{
cout<<m;
return 0;
}
if(yy>y)r=m;
if(yy<y)l=m;
}
cout<<-1;
return 0;
}