平方和阶乘(一个繁琐的高精 C++)

平方和阶乘
题目限制
时间限制 1000ms 内存限制 1000KiB
题目描述 Description
小明是一个数学渣渣,但是老师总是让他做一些很奇怪的题目。
这次小明又遇到麻烦了,老师告诉他一个数a,让他求出这个数平方的阶乘a1和这个数阶乘的平方a2,还要a1a2的和,和a1a2的非负数差;
在a很小的时候,小明勉强能死算出答案;但是a很大的时候,小明就崩溃了。
请你为小明编一个程序解决这个问题。
输入描述 Input Description
输入一个正整数a。(1<=a<=250)
输出描述 Output Description
第一行输出a平方的阶乘a1。
第二行输出a阶乘的平方a2。
第三行输出a1+a2的值。
第四行输出a1-a2的绝对值。
样例输入 Sample Input

3

样例输出 Sample Output

362880
36
362916
362844

数据范围及提示 Data Size & Hint
1<=a<=250;
数据大到不可想象,务必使用高精。(不用可能1个测试点也不过)
a1=(aa)!;a2=(a!)(a!);

思路点拔:由于本题数据很大,所以我们需要使用高精度进行求解,首先计算平方的阶乘,由于a的平方没有爆,所以我们就用一个int类型的变量存储a的平方的值,然后,我们就使用高精乘以低精的做法,然后我们那另一个数组把这个阶乘的结果复制一份,然后就使用纯粹的高精乘,然后就用一个高精加和一个高精减就可以了,唯一要强调的就是:数组开得有点多,所以不要搞混淆了。
上代码!!

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int a[1000005]={
  0,1},x,w=1,b[1000005]={
  0,1},c[1000005],d[2000005],e[
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值