C++数根

题目描述

给定一个十进制下的正整数n,若n的各位数字之和是一位数,则这个和是n的数根。否则,将这个和写成十进制后,继续求它的各位数字之和,直到结果变成一位数为止,定义最后的结果为n的数根。

例如,999的数根为9,因为9+9+9=27,2+7=9。给定n,请输出它的数根。注意,部分数据中的n可能很大。

输入描述

单个整数,表示输入的数字n。

输出描述

单个数字:表示n的数根。

输入样例

999

输出样例

9

数据描述

40%的数据下:1≤𝑛≤2^3

80%的数据下:1≤𝑛≤2^63

100%的数据下:1≤𝑛≤10^1000

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	cin>>s;
	int len=s.size(),ans=0;
	for(int i=0;i<len;i++){
		ans=ans+(s[i]-'0');
	}
	if(ans<=9){
		cout<<ans;
	}else{
		while(ans>9){
			int t=ans;
			ans=0;
			for(int i=t;i!=0;i/=10){
				ans+=i%10;
			}
		}
		cout<<ans;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值