首页 > 其他分享 >高精度

高精度

时间:2024-08-23 13:04:27浏览次数:10  
标签:return 高精度 int back vector include size

#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
bool operator<(vector<int> a,vector<int> b)
{
    if(a.size()!=b.size()) return a.size()<b.size();
    for(int i=a.size()-1;i>=0;i--)
    {
        if(a[i]!=b[i]) return a[i]<b[i];
    }
    return 0;
}
vector<int> operator-(vector<int> a,vector<int> b)
{
	vector<int> c;
	int t=0;
	for(int i=0;i<a.size();i++)
	{
		t=a[i]-t;
		if(i<b.size()) t=t-b[i];
		c.push_back((t+10)%10);
		if(t<0) t=1;
		else t=0;
	}
	while(c.size()>1&&c.back()==0) c.pop_back();
	return c;
}
vector<int> operator/(vector<int> a,vector<int> b)
{
	if(a<b) return {0}; 
	int la=a.size(),lb=b.size();
	int dv=la-lb;
	vector<int> c(dv+10,0);
	reverse(b.begin(),b.end());
	for(int i=0;i<dv;i++) b.push_back(0);
	reverse(b.begin(),b.end());
	lb=la;
	for(int i=0;i<=dv;i++)
	{
		while(!(a<b))
		{
			a=a-b;
			c[dv-i]++;
		}
		b.erase(b.begin());
	}
	while(c.size()>1&&c.back()==0) c.pop_back();
	return c;
}
vector<int> eq(string b)
{
	vector<int> a;
	for(int i=b.length()-1;i>=0;i--) a.push_back(b[i]-'0');
	return a;
}
vector<int> operator+(vector<int> a,vector<int> b)
{
	vector<int> c(max(a.size(),b.size())+7);
	int t=0;
	for(int i=0;i<=max(a.size(),b.size());i++)
	{
		if(i<a.size()) t+=a[i];
		if(i<b.size()) t+=b[i];
		c[i]=t%10;
		t/=10;
	}
	while(c.size()>1&&c.back()==0) c.pop_back();
	return c;
}
vector<int> to_vector(int n)
{
	vector<int> a;
	while(n)
	{
		a.push_back(n%10);
		n/=10;
	}
	return a;
}
int to_int(vector<int> a)
{
	int x=0;
	for(int i=a.size()-1;i>=0;i--)
	{
		x*=10;
		x+=a[i]%10;
	}
	return x;
}
vector<int> operator*(vector<int> a,vector<int> b)
{
	vector<int> c(a.size()+b.size()+7);
	for(int i=0;i<a.size();i++)
	{
		for(int j=0;j<b.size();j++)
		{
			c[i+j]+=a[i]*b[j];
		}
	}
	int t=0;
	for(int i=0;i<c.size();i++)
	{
		t+=c[i];
		c[i]=t%10;
		t/=10;
	}
	while(c.size()>1&&c.back()==0) c.pop_back();
	return c;
}
vector<int> to_ten(string s,int n)
{
	vector<int> sum;
	sum.push_back(0);
	for(int i=s.length()-1;i>=0;i--)
	{
		int x=s[i]-'0';
		if(s[i]>='A'&&s[i]<='Z') x=s[i]-'A'+10;
		vector<int> summ;
		summ.push_back(1);
		vector<int> tmp;
		tmp=to_vector(n);
		for(int j=1;j<=s.length()-1-i;j++)
		{
			summ=summ*to_vector(n);
		}
		tmp=to_vector(x);
		sum=sum+summ*to_vector(x);
	}
	return sum;
}
string to_m(vector<int> x,int m)
{
	string y;
	while(x.size()>1||x[0]!=0)
	{
		int t;
		if(x<to_vector(m)) t=to_int(x);
		else t=to_int(x-x/to_vector(m)*to_vector(m));
		if(t>9) t=(t-10)+'A';
		else t=t+'0';
		y+=t;
		x=x/to_vector(m);
	}
	string ans;
	for(int i=y.length()-1;i>=0;i--) ans+=y[i];	
	return ans;
}
void put(vector<int> a)
{
    while(a.size()) cout<<a.back(),a.pop_back();
}
int main()
{
    
}

标签:return,高精度,int,back,vector,include,size
From: https://www.cnblogs.com/PMpro/p/18375780

相关文章

  • c++高精度细剖
    深入剖析C++中的高精度计算是一个广泛且深入的主题,它涵盖了多种技术和策略,用于处理超过标准整数或浮点数类型能表示范围的数值。在这里,我将提供一个概括性的框架,涵盖高精度计算的基本概念、常见方法、实现细节以及可能的应用场景,但请注意,由于篇幅限制,这里无法直接达到“十万字......
  • 排序算法 排序性能测试代码(随机数调整,高精度时间) - C++
    目录测试工具源码testsort测试工具C++11标准库<chrono>中高精度计时器,时间精度可以达到1纳秒.C++11标准库<random>中随机数生成器,可以实现各类随机数,本测试主要用于实现9成随机数下排序性能源码源码我拆分成两部分,一部分为测试,一部分为sort源码.合并一起使用test......
  • AP9195 7-24V高效率、高精度的升压型大功率 LED 照明灯与恒流驱动控制芯片方案
    概述AP9195是一款高效率、高精度的升压型大功率LED灯恒流驱动控制芯片。AP9195内置高精度误差放大器,固定关断时间控制电路,恒流驱动电路等,特别适合大功率、多个高亮度LED灯串的恒流驱动。AP9195通过调节外置的电流采样电阻,能控制高亮度LED灯的驱动电流,使LED灯亮度......
  • 北斗/GNSS高精度数据处理暨GAMIT/GLOBK v10.75软件
    随着GNSS导航定位技术在不同领域的广泛应用和技术更新的飞速发展,在大型工程项目的设计、施工、运行和管理各个阶段对工程测量提出了更高的要求,许多测绘、勘测、规划、市政、交通、铁道、水利水电、建筑、矿山、道桥、国土资源、气象、地震等行业部门在大型工程建设过程中需应用......
  • 【Head3D X 2024 三维RGB - 头部三维数据集-RGB-高精度-三维建模渲染-高清】
    Head3DX2024商用数据集一、数据标注信息(数据量20w+)1)高清原图(短边高于等于2000像素)2)三维头部mesh(obj文件)3)三维虚拟相机内参(npy文件)4)二维头部关键点信息(npy文件5)姿态角(pitch,roll,yaw)检测(基于相机坐标系)三维维建模渲染示例:(Head3D2024三维渲染......
  • 高精度加减乘
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;inta[10088],b[10087],c[10087];stringmem("0123456789ABCDEF");boolcheck_(stringa,stringb){ if(a.length()>b.length())return1; if(b.length()>a.length())return0......
  • 高精度减法与混合加法
    高精度减法bigNumbigSub(bigNum*a,bigNum*b){ bigNumc; for(inti=0;i<a->len||i<b->len;i++) { if(a->num[i]<b->num[i]) { a->num[i]+=10; a->num[i+1]-=1; } c.num[i]=a->num[i]-b->num[i];......
  • 【漫谈C语言和嵌入式007】AD2S1210简介与应用:高精度旋转变压器到数字转换器的解析
            在精密运动控制和测量系统中,旋转变压器(Resolver)是一种常用的传感器,能够精确检测旋转轴的位置和速度。为了将旋转变压器的模拟信号转换为数字信号,便于微控制器或DSP进行处理,AD2S1210作为一款高性能的旋转变压器到数字转换器(RDC),为工程师提供了高精度、低延迟的......
  • 高精度运算——大数加法与乘法
    要点:加法直接传递进位,乘法先保留进位,后统一处理使用int数组存储,空间浪费,处理方便建立bigNum结构(或类),处理清晰方便代码:基础定义#include<bits/stdc++.h>usingnamespacestd;charnum1[10000];charnum2[10000];structbigNum{ intnum[1000]={}; intlen;};vo......
  • SciTech-BigDataAIML-LLM-Transformer Series-Positional Encoding: 位置编码: 统计模
    词汇WE(WordEmbedding):词嵌入PE(PositionalEncoding):位置编码统计模型和大数据的本源是由"MI(移动互联网)"和"IoT(万物互联)"决定的1真正改驱“改革生产生活习惯”的是“国家政策”与“政府”。新经济的产生是以“改革生产生活习惯”为前提.生产生活的习惯改变:行政......