#include<iostream>
using namespace std;
class BigInt
{
public:
int n;
int a[10000];
public:
BigInt(int x)
{
n = 0;
while (x > 0)
{
a[n++] = x % 10;
x = x / 10;
}
}
void Output();
void Caculate(int x, int k);
};
void BigInt::Output()
{
for (int i = n - 1; i >= 0; i--)
{
cout << a[i];
}
}
void BigInt::Caculate(int x, int k)
{
for (int i = 0; i < k - 1; i++)
{
int l = 0;
for (int j = 0; j < n; j++)
{
l += a[j] * x;
int t = l;
l = t / 10;
a[j] = t % 10;
}
while (l > 0)
{
a[n++] = l % 10;
l /= 10;
}
}
}
int main()
{
int x, k;
cin >> x >> k;
BigInt b(x);
b.Caculate(x, k);
b.Output();
}
请问高精度幂为什么这么求啊 不懂那个caculate函数(语言-c++)
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- SmallAntJ 2022-05-05 23:13关注
跟手算差不多
void BigInt::Caculate(int x, int k) { for (int i = 0; i < k - 1; i++) //计算k-1次x乘以x,一开始BigInt里已经用数组存了一个x { int l = 0; for (int j = 0; j < n; j++)//按位乘,从个位开始 { l += a[j] * x; int t = l; l = t / 10; // 计算进位 a[j] = t % 10; //计算当前位置的数字 } while (l > 0) //如果计算结果大于原数的位数,继续向前进位 { a[n++] = l % 10; l /= 10; } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 求解vmware的网络模式问题
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
- ¥15 springboot 3.0 实现Security 6.x版本集成
- ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
- ¥30 请帮我解决一下下面六个代码
- ¥15 关于资源监视工具的e-care有知道的嘛
- ¥35 MIMO天线稀疏阵列排布问题
- ¥60 用visual studio编写程序,利用间接平差求解水准网
- ¥15 Llama如何调用shell或者Python
- ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?