2 条题解
-
119230202 尹庆杰 (YQJMonster) LV 9 @ 2023-10-29 14:17:58
写了整整一天才调试出来(我是蒟蒻)
看看就行,代码注释得很清楚#include<iostream>
#define N 100010
using namespace std;
int a[N], b[N]; //全局数组自动初始化为零
inline int Mul(int a[], int lena, int b[], int lenb)
{
int c[N] = { 0 }; //临时存放计算结果的数组
int lenc = lena + lenb; //c 数组的位数不会超过其和
for (int i = 0; i < lena; i++)
{
for (int j = 0; j < lenb; j++)
{
c[i + j] += a[i] * b[j]; //核心算法
c[i + j + 1] += c[i + j] / 10; //进位
c[i + j] %= 10; //留位
}
}
if (c[lenc-1] == 0 && lenc > 0) //计算结果数组长度
lenc--; //消除前置零(理论上最多出现一个前置零所以只用减一次)
for (int i = 0; i < lenc; i++)
a[i] = c[i]; //用结果c数组覆写a数组便于后续反复调用
return lenc;
}
int main()
{
int i = 0, x, n, ans;
int len, lena;
cin >> x >> n;
while (x != 0)
{
a[i] = x % 10;
b[i] = x % 10;
x /= 10;
i++;
}
len = lena = i; //初始位数
for (int i = 1; i < n; i++)
lena = Mul(a,lena,b,len);
for (int i = lena-1; i >= 0; i--)
cout << a[i]; //反向输出结果
return 0;
} -
02022-08-05 11:54:46@
求大神帮忙康康 哪儿错了 跪求
写了3小时 没写出来
#include <bits/stdc++.h>
using namespace std;
int main()
{
unsigned long long a,b,sum=0;
cin>>a>>b;
for(int i=1;i<=b;i++)
{
sum=a*a;
a=a+a-1;
}
cout<<a-1;return 0;
}
/*输入2 40
输出的:1099511627776
答案: 1099511627776*/
/*输入2 32
输出的:4294967296
答案: 4294967296*/
- 1
信息
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 531
- 已通过
- 101
- 通过率
- 19%
- 被复制
- 8
- 上传者