当前位置:网站首页>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;
}
边栏推荐
- Bean 作⽤域和⽣命周期
- PDF文档签名指南
- Introduction to energy Router: Architecture and functions for energy Internet
- This article explains the complex relationship between MCU, arm, muc, DSP, FPGA and embedded system
- ES类和对象、原型
- Postman interface test VI
- Differences between MCU and MPU
- 能源路由器入门必读:面向能源互联网的架构和功能
- Embedded background - chip
- ORM -- database addition, deletion, modification and query operation logic
猜你喜欢
柏拉图和他的三个弟子的故事:如何寻找幸福?如何寻找理想伴侣?
Postman interface test II
The method of word automatically generating directory
web3.0系列之分布式存储IPFS
Enterprise practice | construction of banking operation and maintenance index system under complex business relations
【剑指Offer】42. 栈的压入、弹出序列
【学习笔记-李宏毅】GAN(生成对抗网络)全系列(一)
Introduction to energy Router: Architecture and functions for energy Internet
The landing practice of ByteDance kitex in SEMA e-commerce scene
LeetCode 练习——113. 路径总和 II
随机推荐
Introduction to automated testing framework
ORM -- logical relation and & or; Sort operation, update record operation, delete record operation
Deadlock caused by non clustered index in SQL Server
arcgis操作:dwg数据转为shp数据
ArcGIS operation: converting DWG data to SHP data
高数_第1章空间解析几何与向量代数_向量的数量积
phpcms实现PC网站接入微信Native支付
Embedded background - chip
The method of word automatically generating directory
The Himalaya web version will pop up after each pause. It is recommended to download the client solution
Performance optimization record of the company's product "yunzhujia"
Introduction to energy Router: Architecture and functions for energy Internet
【二开】【JeecgBoot】修改分页参数
Google Colab装载Google Drive(Google Colab中使用Google Drive)
MCU与MPU的区别
Become a "founder" and make reading a habit
Parameter sniffing (2/2)
ORM -- query type, association query
Inno Setup 打包及签名指南
HAL库配置通用定时器TIM触发ADC采样,然后DMA搬运到内存空间。