求大佬讲解代码
  • 板块学术版
  • 楼主Titanfall
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/12/22 12:39
  • 上次更新2023/10/28 13:55:36
查看原帖
求大佬讲解代码
638281
Titanfall楼主2021/12/22 12:39

第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;
}
2021/12/22 12:39
加载中...