当前位置:网站首页>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;
}边栏推荐
- request对象对请求体,请求头参数的解析
- How to cancel automatic saving of changes in sqlyog database
- LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件
- Postman tutorial - scripting
- Postman interface test VI
- C logging method
- Postman interface test III
- Fiddler simulates the interface test
- 反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释
- ArcGIS operation: converting DWG data to SHP data
猜你喜欢

AHB bus in stm32_ Apb2 bus_ Apb1 bus what are these

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

Es classes and objects, prototypes

Arcgis操作: 批量修改属性表

Methods of adding centerlines and centerlines in SolidWorks drawings

ORM--查询类型,关联查询

Some thoughts on the testing work in the process of R & D

ORM model -- creation and query of data records

Programming features of ISP, IAP, ICP, JTAG and SWD

ORM -- grouping query, aggregation query, query set queryset object properties
随机推荐
Delete a record in the table in pl/sql by mistake, and the recovery method
Phpcms realizes PC website access to wechat native payment
The physical meaning of imaginary number J
Mongodb creates an implicit database as an exercise
网上可以开炒股账户吗安全吗
Postman interface test VII
Before joining the chain home, I made a competitive product analysis for myself
MongoDB创建一个隐式数据库用作练习
LeetCode 练习——113. 路径总和 II
The landing practice of ByteDance kitex in SEMA e-commerce scene
Official media attention! The list of top 100 domestic digital collection platforms was released, and the industry accelerated the healthy development of compliance
In addition to the objective reasons for overtime, what else is worth thinking about?
【剑指Offer】42. 栈的压入、弹出序列
UnityWebRequest基础使用之下载文本、图片、AB包
The method of word automatically generating directory
Download Text, pictures and ab packages used by unitywebrequest Foundation
【HigherHRNet】 HigherHRNet 详解之 HigherHRNet的热图回归代码
The request object parses the request body and request header parameters
Postman interface test III
ISP、IAP、ICP、JTAG、SWD的编程特点