上一期我们讲的是求一个数的数根,和本期唯一不同的是,数据范围不同了,上一期这个数是小于等于10的18次方的,这一期是小于等于10的1000次方的,开一个变量?肯定不行,我们需要再开一个数组,而且是char数组,在代码中我们需要在后面把char转化成int,这就要涉及ASCII的知识了!如何把存在char的数字变成能计算的数字呢?只需要-48!好了,放代码!
#include<bits/stdc++.h>
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<<ans;//如果这个数的数位和小于10,那么直接输出这个数else cout<<js(ans);//否则使用函数return 0;
}