当前位置:网站首页>Factorial implementation of large integer classes
Factorial implementation of large integer classes
2022-07-07 10:16:00 【Last night was peaceful and Chang'an_】
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn = 10000;
struct BigInt
{
BigInt(int x = 0)
{
memset(arr, 0, sizeof(arr));// Initialize all to 0
for (len = 1; x; len++)
{
arr[len] = x % 10;// Yes x Reverse order preservation
x /= 10;
}
len--;
}
int& operator[](int i)
{
return arr[i];// use x[i] Instead of x.arr[i]
}
void flatten(int L)// Handle bits that are not single digits into single digits , So it is called flattening ,L Not less than the effective length
{
len = L;
for (int i = 1; i <= len; ++i)
{
arr[i + 1] += arr[i] / 10;
arr[i] %= 10;
}
while (!arr[len])// Eliminate pre 0
{
len--;
}
}
void print()// Reverse output
{
for (int i = max(1, len); i >= 1; --i)
{
cout << arr[i];
}
cout << endl;
}
int len;
int arr[maxn];
};
BigInt operator+(BigInt &a,BigInt &b)
{
BigInt c;
int len = max(a.len, b.len);
for (int i = 1; i <= len; ++i)
{
c[i] += a[i] + b[i];
}
c.flatten(len + 1);// The maximum length shall not exceed len+1
return c;
}
BigInt operator*(BigInt& a, BigInt& b)
{
BigInt c;
int len = a.len + b.len;
for (int i = 1; i <= a.len; ++i)
{
for (int j = 1; j <= b.len; ++j)
{
c[i + j - 1] += a[i] * b[j];//a[i] * b[j] The result of is produced in i+j-1 On a
}
}
c.flatten(len );// The maximum length shall not exceed len+1
return c;
}
BigInt operator*(BigInt& a, int& b)
{
BigInt c;
int len = a.len;
for (int i = 1; i <= len; ++i)
{
c[i] += a[i] *b;
}
c.flatten(len + 11);//int Type longest 10 position , So you can flatten it like this
return c;
}
int main()
{
int n;
cin >> n;
BigInt fac(1);
BigInt ans(0);
for (int i = 1; i <= n; ++i)
{
fac = fac * i;
ans = ans + fac;
}
ans.print();
return 0;
}边栏推荐
- MCU is the most popular science (ten thousand words summary, worth collecting)
- China's first electronic audio category "Yamano electronic audio" digital collection is on sale!
- Win10安装VS2015
- Differences between MCU and MPU
- Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
- Agile course training
- LLVM之父Chris Lattner:為什麼我們要重建AI基礎設施軟件
- Deadlock caused by non clustered index in SQL Server
- 【acwing】786. 第k个数
- The physical meaning of imaginary number J
猜你喜欢

Guide de signature du Code Appx

【剑指Offer】42. 栈的压入、弹出序列

LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件

AI moves from perception to intelligent cognition

Appx code signing Guide

ArcGIS operation: batch modify attribute table

【学习笔记-李宏毅】GAN(生成对抗网络)全系列(一)

ORM model -- associated fields, abstract model classes

Introduction to energy Router: Architecture and functions for energy Internet

官媒关注!国内数字藏品平台百强榜发布,行业加速合规健康发展
随机推荐
Fiddler break point
This article explains the complex relationship between MCU, arm, muc, DSP, FPGA and embedded system
Appx代碼簽名指南
Some thoughts on the testing work in the process of R & D
“十二星座女神降临”全新活动推出
The combination of over clause and aggregate function in SQL Server
Inno setup packaging and signing Guide
官媒关注!国内数字藏品平台百强榜发布,行业加速合规健康发展
web3.0系列之分布式存储IPFS
STM32 product introduction
Phpcms realizes PC website access to wechat native payment
Before joining the chain home, I made a competitive product analysis for myself
MCU与MPU的区别
【acwing】786. 第k个数
UnityWebRequest基础使用之下载文本、图片、AB包
Finally, there is no need to change a line of code! Shardingsphere native driver comes out
phpcms实现PC网站接入微信Native支付
Postman interface test I
Memory ==c language 1
Bit operation ==c language 2