题目链接:P1008 [NOIP1998 普及组] 三连击 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
代码如下:
# include <iostream>
using namespace std;
int main()
{
int i, j, a[1010] = {0}, b[1010] = {0}, n;
cin>>n;
a[0] = b[0] = 1;
for(i = 2; i <= n; i++)
{
for(j = 0; j < 100; j++)
{
b[j] *= i;
}
for(j = 0; j < 100; j++)
{
if(b[j] > 9)
{
b[j + 1] += b[j] / 10;
b[j] %= 10;
}
}
for(j = 0; j < 100; j++)
{
a[j] += b[j];
if(a[j] > 9)
{
a[j + 1] += a[j] / 10;
a[j] %= 10;
}
}
}
for(i = 100; i >= 0 && a[i] == 0; i--);
for(j = i; j >= 0; j--)
{
cout<<a[j];
}
return 0;
}
这个考验的就是进制位的进位和取余。另一种方法,(利用高精度乘法和高精度加法来写)
683

被折叠的 条评论
为什么被折叠?



