zoukankan      html  css  js  c++  java
  • HDU1163 Eddy's digital Roots

    问题链接:HDU1013 Digital Roots入门练习题,用C语言编写程序。

    这个问题是对于输入的n,计算n^n的数根。

    先看一下以下式子:

    因为:(10*a+b)*(10*a+b)=100*a*a+10*2*a*b+b*b 

    所以右边式子的数根(中间结果,也是左边式子的数根)为:a*a+2*a*b+b*b=(a+b)*(a+b)

    故:对于两位数n,n*n的数根=n的树根×n的树根。

    同理可以推出,对于任意位数的n,也满足:n*n的数根=n的树根×n的树根。 

    程序中,实现一个计算整数数根的函数,利用这个函数来计算n^n的数根。

    这个问题还有一种解决办法是利用9余数定理来实现。

    AC的C语言程序如下:

    /* HDU1163 Eddy's digital Roots */
    
    #include <stdio.h>
    
    // 计算数根函数
    int digitalroots(int val)
    {
        int result, temp;
    
        while(val) {
            result = 0;
            temp = val;
    
            while(temp) {
                result += temp % 10;
                temp /= 10;
            }
    
            if(result < 10)
                break;
    
            val = result;
        }
    
        return result;
    }
    
    int main(void)
    {
        int n, ans, nr, i;
    
        while(scanf("%d", &n) != EOF) {
            if(n == 0)
                break;
    
            // 计算n的数根
            ans = nr = digitalroots(n);
    
            // 计算n^n的数根
            for(i=2; i<=n; i++) {
                ans = digitalroots(ans * nr);
            }
    
            // 输出结果
            printf("%d
    ", ans);
        }
    
        return 0;
    }


  • 相关阅读:
    (备忘)jeecg的$.dialog的一些参数
    jquery中的ajax方法(备忘)
    linux(centos7)设置tomcat开机启动
    centos7设置静态IP地址
    golang 之 sql
    golang 之 flag
    golang 之 context包
    golang 之文件操作
    golang之strings
    golang 函数和方法
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564540.html
Copyright © 2011-2022 走看看