求一个数的数根(高精度)

上一期我们讲的是求一个数的数根,和本期唯一不同的是,数据范围不同了,上一期这个数是小于等于10的18次方的,这一期是小于等于10的1000次方的,开一个变量?肯定不行,我们需要再开一个数组,而且是char数组,在代码中我们需要在后面把char转化成int,这就要涉及ASCII的知识了!如何把存在char的数字变成能计算的数字呢?只需要-48!好了,放代码!

#include
using namespace std;
char a[1001];//这就是我们需要求的那个数
int ans;
int js(int n){
	int q=0;
	while(n!=0) {
		n/=10;
		q+=n%10;
	}//求数位和
	if(q%10==q) return q;//如果它的数位和是小于10的,那么返回这个数,并且回到主函数中输出
	else return js(q);//否则继续递归
}
int main(){
	scanf("%s",a+1);
	int l=strlen(a+1);//这个数的数位
	for(int i=1;i<=l;i++) ans+=a[i]-'0';//char->int:只需要-48,其实零的ASCII码就是48哦!
	if(ans%10==ans) cout<

你可能感兴趣的:(算法,c++)