首页 > 其他分享 >【模板】高精度计算

【模板】高精度计算

时间:2024-03-16 18:44:30浏览次数:20  
标签:10 高精度 int back vector 计算 ans 模板 size

// 高精度加法
vector<int> add(vector<int> &A,vector<int> &B) {
	vector<int> ans;
	if(A.size() < B.size()) return add(B,A);
	for(int i = 0,t = 0; i < A.size(); i ++) {
		t += A[i];
		if(i < B.size()) t += B[i];
		ans.push_back(t % 10);
		t /= 10;
	}
	if(t) ans.push_back(t);
	return ans;
}
// 高精度减法
vector<int> add(vector<int> &A,vector<int> &B) {
	vector<int> ans;
	for(int i = 0,t = 0; i < A.size(); i ++) {
		t = A[i] - t;
		if(i < B.size()) t -= B[i];
		ans.push_back((t + 10) % 10);
		if(t < 0) t = 1;
		else t = 0;
	}
	// 清除前导0
	while(ans.size() > 1 && ans.back() == 0) C.pop_back();
	return ans;
}
// 高精度乘法
vector<int> mul(vector<int> &A,vector<int> &B) {
	vector<int> ans;
	for(int i = 0; i < A.size(); i ++) {
		for(int j = 0; j < B.size(); j ++) {
			ans[i + j] += A[i] * B[i];
		}
	}
	for(int i = 1; i < A.size() + B.size(); i ++) {
		ans[i] += ans[i - 1] / 10;
		ans[i - 1] %= 10;
	}
	while(ans.size() > 1 && ans.back() == 0) ans.pop_back();
	return ans;
}
// 高精度除低精度
vector<int> div(vector<int> &A,ll &b) {
	vector<int> ans;
	ll r = 0;
	for(int i = A.size() - 1; i >= 0; i --) {
		r = r * 10 + A[i];
		ans.push_back(r / b);
		r %= b;
	}
	reverse(ans.begin(),ans.end());
	while(ans.size() > 1 && ans.back() == 0) ans.pop_back();
	return ans;
}

标签:10,高精度,int,back,vector,计算,ans,模板,size
From: https://www.cnblogs.com/zc-study-xcu/p/18077412

相关文章

  • FLUKE 5730A 高精度多功能校准器
    计量专家必备之校准器 5730A提供了性能良好的直流/低频信号,专为校准专业人士所需。包括:国家级校准实验室,军队,国防,第三方校准实验室,企业内部校准实验室等等。5730A高精度校准器可溯源至国家标准,遵循ISO17025的认证要求。技术指标中分别给出了99%置信度及95%置信度水平的指标,......
  • C++类模板与友元详解
    C++模板下面分四种情况分别讨论。1.函数、类、类的成员函数作为类模板的友元函数、类、类的成员函数都可以作为类模板的友元。程序示例如下:void Func1() {  }class A {  };class B{public:    void Func() { }};template <class T>class Tmpl{......
  • 模板整理
    整理遇到的几个比较难记的算法的模板。KMP算法KMP算法是字符串匹配算法,通常是在长字符串中对短字符串(模式串)进行匹配。使用next数组对模式串的前缀表进行记录。前缀表:当匹配失败时,将根据这个前缀表决定指针的位置。前缀表的目的是找到模式串中相等的前缀和后缀。例如aabaaf,......
  • C++类模板中的静态成员
    C++模板类模板中可以定义静态成员,从该类模板实例化得到的所有类都包含同样的静态成员。程序示例如下:#include <iostream>using namespace std;template <class T>class A{private:    static int count;public:    A() { count ++; }    ~A()......
  • P3374 【模板】树状数组 动态求连续区间和 刷题笔记
    我们创建如下的树状数组来辅助操作该数组每个s[i]处于第几层取决于其二进制最后低位的1处于从右往左数第几列显然所有奇数的最右边一位都是1即其最低位的1处于右边第一列所以所有的奇数处于第一层而2,6,10,14的最低位1处于右边第二列 所以这些数处于第二层 8的最......
  • C++类模板与继承详解
    C++模板类模板和类模板之间、类模板和类之间可以互相继承。它们之间的派生关系有以下四种情况。1.类模板从类模板派生示例程序:template <class T1, class T2>class A{    Tl v1; T2 v2;};template <class T1, class T2>class B : public A <T2,......
  • 计算机二级(Python)真题讲解每日一题:《绘制雪花》
    在横线处填写代码,完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬利......
  • C++模板的显式实例化
    C++模板前面讲到的模板的实例化是在调用函数或者创建对象时由编译器自动完成的,不需要程序员引导,因此称为隐式实例化。相对应的,我们也可以通过代码明确地告诉编译器需要针对哪个类型进行实例化,这称为显式实例化。编译器在实例化的过程中需要知道模板的所有细节:对于函数模板,也就是......
  • 将C++模板应用于多文件编程
    C++模板在将函数应用于多文件编程时,我们通常是将函数定义放在源文件(.cpp文件)中,将函数声明放在头文件(.h文件)中,使用函数时引入(#include命令)对应的头文件即可。编译是针对单个源文件的,只要有函数声明,编译器就能知道函数调用是否正确;而将函数调用和函数定义对应起来的过程,可以延迟到......
  • C++模板的实例化
    C++模板模板并不是真正的函数或类,它仅仅是编译器用来生成函数或类的一张“图纸”。模板不会占用内存,最终生成的函数或者类才会占用内存。由模板生成函数或类的过程叫做模板的实例化,相应地,针对某个类型生成的特定版本的函数或类叫做模板的一个实例。在学习模板以前,如果想针对不同......