繁体   English   中英

C ++非常长的整数计数器

[英]C++ very long integer digit counter

我分配了一个用C ++创建程序,该程序将计算极长整数的位数。

我给了两个随机数a和b(1 <= a,b <= 10 ^ 16)。 我需要找出数字a ^ b(a等于b的幂)有多少个数字。 (我不需要知道数字本身,只需知道它有多少个数字)

我对如何解决这个问题知之甚少,我想到的一种方式是创建一个单独的结构,该结构可以容纳这些非常长的整数,并且能够对其进行乘法运算,但是要进行如此多次的乘法运算则要花费极长时间。次,该程序的时间限制为1秒。 也许在C ++中有某种功能或类似的功能可以帮助我?

谢谢您的帮助!

B为底的数字N的位数是floor(log B N)+1。因此,您需要计算floor(log 10 (a b ))+ 1,它等于floor(b * log 10 a)+ 1个

floor将数字四舍五入到最接近的整数。 <cmath>库中提供了floor和log10功能

使用对数,可以用“小”数字解决:log(a ^ b)= log(a)* b

您正在寻找的号码将是

auto exp = math.log10(a) * b;

您需要将thix结果四舍五入为比该值高的整数

您将使用用户的数字,然后执行(int temp)在代码中使用它,然后从(cmath)库调用pow函数,如果您想打印两个数字的幂,请调用此函数,然后执行一个for循环,从(1)到(power number),在这个循环中,您将使temp和counter相等,并且在循环外,您将打印该温度,这就是代码。

#include <iostream>
#include <cmath>
using namespace std;

void power_digit();

int main()
{
    power_digit();   
}
void power_digit()
{
    int x , y ,temp ;
    string result;
    cout << "\nEnter number one :";
    cin >> x ;
    cout << "\nEnter number two :";
    cin >> y ;
    cout << "The power of x and y is : "<< pow(x,y);
      for (int i = 1 ; i < y ; i++)
    {
        temp =  i ;
    }
    cout << "\nThe digit of result is :" << temp;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM