hdu1163(求n的n次方的位根)

2024-05-12 21:48
文章标签 次方 hdu1163 位根

本文主要是介绍hdu1163(求n的n次方的位根),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以前一直超时,看了之后原来可以用数学推出来!!!!!!

以下为摘数学算法:              

        因为ab*ab=(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)

        abc*abc=(100*a+10*b+c)*(100*a+10*b+c)

                   =10000*a*a+2000*a*b+100*b*b+200*a*c+20*b*c+c*c

                   =a*a+2*a*b+b*b+2*a*c+2*b*c+c*c

                   =(a+b)^2+2*c*(a+b)+c*c

                   = (a+b+c)*(a+b+c)

          

        同理可以知道四位数,五位数也一样,

                即n*n的数根=n的数根*n的数根

 

#include<stdio.h>
#include<string.h>

int main()
{
    int f,n,i,sum,t;

    while(scanf("%d",&n)==1&&n!=0)
    {
              sum=n;
            while(sum>=10)
            {
                t=0;
                while(sum)
                {
                     t+=sum%10;
                    sum/=10;
                }
               sum=t;
            }
            f=sum;
            for(i=2;i<=n;i++)
             {
                sum*=f;
                while(sum>=10)
                {
                    t=0;
                    while(sum)
                    {
                         t+=sum%10;
                        sum/=10;
                    }
                   sum=t;
                }
             }
             f=sum;
        printf("%d\n",f);
    }
    return 0;
}

 

这篇关于hdu1163(求n的n次方的位根)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/983823

相关文章

牛客《剑指Offer》 -- 数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路 特别注意负数的情况,出现负数,将其转化为正数然后求倒数。 class Solution {public:double Power(double base, int exponent) {double total = 1;bool flag = false

剑指offer__04__数值的整数次方

题目 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不考虑大数问题 需要注意的地方 基数为 0 ,指数为负的情况优化计算的次数,利用指数相乘的性质判断奇偶性使用位运算,节约计算量 代码 public class Solution {public double Power(double base, int exp

Pytorch:Tensor基本运算【add/sub/mul/div:加减乘除】【mm/matmul:矩阵相乘】【Pow/Sqrt/rsqrt:次方】【近似:floor...】【裁剪:clamp】

一、基本运算:加减乘除 1、乘法 1.1 a * b:element-wise 对应元素相乘 a * b:要求两个矩阵维度完全一致,即两个矩阵对应元素相乘,输出的维度也和原矩阵维度相同 1.2 torch.mul(a, b):element-wise 对应元素相乘 torch.mul(a, b):是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1,

c++习题28-计算2的N次方

目录 一,题目 二,思路 三,代码 一,题目 描述 任意给定一个正整数N(N<=100),计算2的n次方的值。 输入描述 输入一个正整数N。 输出描述 输出2的N次方的值。 用例输入 1  5 用例输出 1  32 二,思路 以2为底的指数如下:       0    1 1    2 2    4  3    8 4   16 5   32 6

剑指offer:数值的整数次方(python)

题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 # -*- coding:utf-8 -*-class Solution:def Power(self, base, exponent):# write code hereflag = 0if base==0:return Falseif exponent==0

C++ | Leetcode C++题解之第372题超级次方

题目: 题解: class Solution {const int MOD = 1337;int pow(int x, int n) {int res = 1;while (n) {if (n % 2) {res = (long) res * x % MOD;}x = (long) x * x % MOD;n /= 2;}return res;}public:int superPow(in

Golang | Leetcode Golang题解之第372题超级次方

题目: 题解: const mod = 1337func pow(x, n int) int {res := 1for ; n > 0; n /= 2 {if n&1 > 0 {res = res * x % mod}x = x * x % mod}return res}func superPow(a int, b []int) int {ans := 1for _, e := rang

Java | Leetcode Java题解之第372题超级次方

题目: 题解: class Solution {static final int MOD = 1337;public int superPow(int a, int[] b) {int ans = 1;for (int e : b) {ans = (int) ((long) pow(ans, 10) * pow(a, e) % MOD);}return ans;}public int po

HashMap 的长度为什么是2的幂次方

HashMap 的长度为什么是2的幂次方 因为这样可以让计算桶位置的操作更加高效。 具体来说,如果 HashMap 的长度是 2 的幂次方,那么计算桶位置时可以使用位运算来代替除法运算,从而提高计算速度。 我们都知道为了找到 KEY 的位置在哈希表的哪个槽里面,需要计算 hash(KEY) % 数组长度 HashMap为了存取高效,就要尽量减少碰撞,将数据分配均匀,那么如何分配均匀,此时主

java.lang.Math中次方与开次方

开方数3 要开放的次数4 被开方数应该为3的4次方=81 次方: Math.pow(3,4)=81 开次方 Math.pow(81.0, 1.0/4)=3