吃饱没事做之——计算2的300000次方

博主分享了一段C++代码,用于计算2的300000次方,代码中包含了一个自定义的decimal类,实现了大数运算。在编写过程中遇到了delete方法的错误,但为了继续计算,博主选择忽略并删除了相关代码。虽然计算过程耗时较长,但最终成功得到了结果,并表示会在另一篇博客中展示该数值。
摘要由CSDN通过智能技术生成

我想起了之前做过的一件事情,计算2的30000次方,之后由于电脑坏了,所有东西都没了。
可恶呐!
但当时是用c写的,于是乎,我这次就用c++写了一下。
先贴一下代码

#include <iostream>


class  decimal
{
private:
    int count;
public:
    int length;
    int len;
    char * del;
     decimal();
    int d_replace();
    int d_ride(int d_multiplier);
    int d_Power(int d_multiplier,int second);
    int d_output();
};

 decimal:: decimal()
{
    count = 50;
    length = count;
    decimal::del = new char[length];
    del[0] = 1;
    len = 1;
}


int decimal :: d_replace()
{
    char * _del;
    length += count;
    std::cout << length << std::endl;
    _del = new char[length];
    count *= 2;
    for(int i = 0;i < len; i++)
    {
        _del[i] = del[i];
    }
    del = new char[length];
    for(int i = 0;i < len; i++)
    {
        del[i] = _del[i];
    }
    return 0;
}
int decimal :: d_ride(int d_multiplier)
{
    int i,transition = 0;
    for(i = 0;i < len || transition != 0; i++)
    {
        if(i >= length - 1)d_replace();
        if(i >= len)del[i] = 0;
        del[i] *= d_multiplier;
        del[i] += transition;
        transition = del[i]/10;
        del[i] %= 10;
        //std::cout << (int)del[i] << std::endl;
    }
    len = i;
    return 0;
}
int decimal :: d_Power(int d_multiplier,int second)
{
    int transition = 0;
    for(int i = 0;i < second; i++)
    {
        d_ride(d_multiplier);
    }
    return 0;
}
int decimal :: d_output()
{
    char c = 0;
    for(int i = len-1;i >=0 ; i--)
    {
        c = del[i] + 48;
        putchar(c);
    }
    putchar('\n');
    return 0;
}


int main(int, char**) {
    decimal d;
    d.d_Power(2,300000);
    d.d_output();
    return 0;
}

此代码是还没完全写好的,我本来是想写阶乘的,结果写着写着就写到了次方来了,还好次方容易实现。

之后可以加多一个函数。来计算阶乘,但这玩意说实话,就是我之前的思路,没有一点创新,怎么说呢?感觉写起来比以前简单多了?

以后遇到的bug挺多的

这次只遇到了一个delete 方法出现错误,然后一气之下,也不管了,直接删了它。

计算出了2的300000次方,时间有点久,这个2的300000次方的数值在我上一篇博客上。

哟,希望这个能让我的女孩子开心开心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值