当前位置:网站首页>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;
}
边栏推荐
猜你喜欢
随机推荐
虚数j的物理意义
对存储过程进行加密和解密(SQL 2008/SQL 2012)
PDF文档签名指南
网上可以开炒股账户吗安全吗
ORM--数据库增删改查操作逻辑
AHB bus in stm32_ Apb2 bus_ Apb1 bus what are these
Inno setup packaging and signing Guide
Postman interface test IV
Deadlock caused by non clustered index in SQL Server
Bit operation ==c language 2
Why does the starting service report an error when installing MySQL? (operating system Windows)
一文讲解单片机、ARM、MUC、DSP、FPGA、嵌入式错综复杂的关系
ORM--查询类型,关联查询
[ORM framework]
ORM -- query type, association query
Postman interface test VII
Leetcode exercise - 113 Path sum II
中国首款电音音频类“山野电音”数藏发售来了!
Performance optimization record of the company's product "yunzhujia"
SQLyog数据库怎么取消自动保存更改