首页 > 其他分享 >高精度模板-结构体

高精度模板-结构体

时间:2022-12-25 21:00:37浏览次数:43  
标签:BigNum 高精度 int len num operator return 模板 结构

include

include

include

include

using namespace std;
struct BigNum
{
int len, s[9999];
BigNum()
{
memset(s, 0, sizeof(s));
len = 1;
}
BigNum operator = (const char* num)
{
len = strlen(num);
for (int i = 0; i < len; ++i)
s[i] = num[len-i-1] - '0';
return *this;
}
BigNum operator = (const int num)
{
char a[9999];
sprintf(a, "%d", num);
*this = a;
return *this;
}
BigNum (const int num)
{
this = num;
}
BigNum (const char
num)
{
*this = num;
}
BigNum operator + (const BigNum &a)
{
BigNum c;
c.len = max(len, a.len) + 1;
for (int i = 0, x = 0; i < c.len; ++i)
{
c.s[i] = s[i] + a.s[i] + x;
x = c.s[i] / 10;
c.s[i] = c.s[i] % 10;
}
if(c.s[c.len-1] == 0)
--c.len;
return c;
}
BigNum operator * (const BigNum &x)
{
BigNum c;
c.len = len + x.len;
for (int i = 0; i < len; ++i)
for (int j = 0; j < x.len; ++j)
{
c.s[i+j] += s[i] * x.s[j];
c.s[i+j+1] += c.s[i+j] / 10;
c.s[i+j] %= 10;
}
if(c.s[c.len-1] == 0)
--c.len;
return c;
}
};
ostream& operator << (ostream &out, const BigNum &x)
{
for (int i = x.len - 1; i >= 0; --i)
cout << x.s[i];
return out;
}
istream& operator >> (istream &in, BigNum &x)
{
char num[9999];
in >> num;
x = num;
return in;
}
int main()
{
int n;
BigNum ans = 0, num = 1;
cin >> n;
for (int i = 1; i <= n; i++)
{
num = num * i;
ans = ans + num;
}
cout << ans << endl;
return 0;
}

标签:BigNum,高精度,int,len,num,operator,return,模板,结构
From: https://www.cnblogs.com/Gery-blog/p/17004569.html

相关文章

  • C++11:支持函数模板的默认模板参数
    在C++98/03标准中,类模板可以有默认的模板参数,如下:template<typenameT,typenameU=int,UN=0>structFoo{//...};但是却不支持函数的默认模板参数:te......
  • ECMAScript 6 入门教程—Set 和 Map 数据结构
    作者|阮一峰1、Set基本用法ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。consts=new......
  • 浅谈 C++ 模板 & 泛化 (妈妈再也不用担心我不会用 std::sort 了)
    基础复习先上个对int类型数组的插入排序:voidinsertionSort_01(int*seq,intfirstIndex,intlastIndex){for(intj=firstIndex+1;j<=lastIndex;++j......
  • C++类模板、函数模板
    类模板的声明需要template<typename类型参数>,等于C#中的泛型类,如List<T>。template<typenameT>classComplex{public://构造函数Complex(Ta,Tb)......
  • 使用不同的文件目录层次结构?
    使用不同的文件目录层次结构?FHS(文件系统层次化标准)规定了制定根文件系统的规则  通常大多少应用程序和发布依赖这些规则,但这些规则不是内核强制的在嵌入式Linux系统中......
  • MAUI新生6.1-Shell导航视觉层次结构
    一、Shell介绍MAUI内置了一套导航框架Shell,主要提供了三类功能:视觉层次结构、路由导航、搜索框。其中视觉层次结构从文字上不是很好理解,可以认为是一套导航菜单系统,具有一......
  • redis设计与实现(一) redis概念和数据结构
    基础概念     定义       Redis(RemoteDictionaryServer)是一个使用C语言编写的,高性能非关系型的键值对数据库。     特点 基于......
  • Redis数据结构与对象
    参考《Redis设计与实现》系列文章目录和关于我一丶简单动态字符串当redis需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值时,就会使用SDS(simpledynamics......
  • 关于结构体和指针
    typedefstructStu{charname[20];shortage;chartele[12];charsex[5];}Stu;voidPrint(Stu*ps){printf("name:%s\n",ps->name);printf("age:%d\n",(*ps).a......
  • 洛谷 P5721 【入门3】循环结构
    P5721【深基4.例6】数字直角三角形1.题目描述给出 n,请输出一个直角边长度是 n 的数字直角三角形。所有数字都是 2 位组成的,如果没有 2 位则加上前导 00。2.输......