The input file will contain a list of positive integers, one per line. The integer may consist of a large number of digits. (1 <= input value <= 10^9)
For each integer in the input, output its digital root on a separate line of the output.
24 39
6 3
#include
using namespace std;
int fn(int x){
int y=0;
while(x){
y+=x%10;
x/=10;
}
int z=y;
if(z<10)
return z;
else if(z>=10)
return fn(z);
}
int main(){
int n,m=0;
while(cin>>n){
if(n<10){
cout<<n<<endl;
}else{
cout<<fn(n)<<endl;
}
}
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int i = scanner.nextInt();
while (i>=10){
int sum=0;
while (i>0){
sum+=i%10;
i=i/10;
}
i=sum;
}
System.out.println(i);
}
}
}
和楼上比起来我也太呆了吧
#include<iostream>
#include<string>
using namespace std;
string solve(string str){
while(str.length() > 1){
long long sum = 0;
for(int i = 0; i < str.length(); i++)
sum += str[i] - '0';
str = "";
int idx = 0;
while(sum){
str += (char)(sum % 10 + '0');
sum /= 10;
}
}
return str;
}
int main(){
string str;
while(cin >> str){
cout << solve(str) << endl;
}
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int judge(int* a,int len) {
int total = 0;
for (int i = 0; i < len; i++)
total += a[i];
if (total / 10 == 0)
return total % 10;
else {
int temp = 0;
while (total > 0) {
a[temp++] = total % 10;
total /= 10;
}
return judge(a, temp);
}
}
int main() {
char ch[30];
while (cin >> ch) {
int total = 0;
int a[30];
for (int i = 0; i<strlen(ch); i++)
a[i] = ch[i] - '0';
cout<<judge(a, strlen(ch))<<endl;
}
} #include<iostream>
using namespace std;
int sumNumber(int num)
{
int count=0;
while(num)
{
count+=num%10;
num=num/10;
}
return count;
}
int getDigitalRoot(int number)
{
if(number<10 && number>0)
return number;
int num=number;
while(num>=10)
{
num=sumNumber(num);
}
return num;
}
int main()
{
int N;
while(cin>>N)
{
if(N>0)
cout<<getDigitalRoot(N)<<endl;
}
return 0;
}
#include <stdio.h>
int digit_root(int n)
{
int root = 0;
while (n)
{
root += n % 10;
n /= 10;
}
if (root > 9)
{
return digit_root(root);
}
else
{
return root;
}
}
int main()
{
int n = 0;
while (scanf("%d", &n) != EOF)
{
printf("%d\n", digit_root(n));
}
return 0;
}
简单的递归#include<iostream>
using namespace std;
typedef long long ll;
ll root(ll n)
{
ll a=0,tmp=0;
while(n>0)
{
a = n%10;
tmp += a;
n/=10;
}
return tmp;
}
int main()
{
ll n;
while(cin>>n)
{
if(n==0) break;
ll res = n;
while(res>=10)
{
res = root(res);
}
cout<<res<<endl;
}
return 0;
} #include<numeric>
#include <iostream>
using namespace std;
#include<vector>
int digits(int n){
if(n<10){
return n;
}
vector<int> v;
while(n!=0){
v.push_back(n%10);
n/=10;
}
int ans=accumulate(v.begin(), v.end(),0);
return digits(ans);
}
int main(){
int n;
while (cin >> n){
cout << digits(n) << endl;
}
} #include <iostream>
using namespace std;
int digital_root(int n) {
//当n大于9时,循环计算
while (n > 9) {
//新的n
int new_n = 0;
//计算n的各个位数之和
while (n > 0) {
new_n += n % 10;
n /= 10;
}
//更新n
n = new_n;
}
//返回n
return n;
}
int main() {
int num;
//循环读入整数
while (cin >> num) {
//输出整数的数字根
cout << digital_root(num) << endl;
}
return 0;
}