首页 > 其他分享 >高精(我*****************)

高精(我*****************)

时间:2024-06-14 17:34:22浏览次数:21  
标签:return int s2 char num 高精 lll

1

#include<bits/stdc++.h>
#define il inline
#define ri register
#define ll long long
using namespace std;
struct lll{
	int num[1001];
	lll(){num[0]=1;}
	il void clear(){
		memset(num,0,sizeof(num)),num[0]=1;
	}
	il void read(){
		string s;cin>>s,num[0]=s.size();
		for(ri int i(1);i<=num[0];++i)
			num[i]=s[num[0]-i];
	}
	il void print(){
		for(ri int i(num[0]);i;--i)putchar(num[i]+48);
	}
	il void operator=(string s){
		num[0]=s.size();
		for(ri int i(1);i<=s.size();++i)
			num[i]=num[s.size()-i];
	}
	il lll operator+(lll x){
		lll y;y.clear();ri int i;
		for(i=1;i<=num[0]||i<=x.num[0];++i){
			y.num[i]+=num[i]+x.num[i];
			if(y.num[i]>9)++y.num[i+1],y.num[i]-=10;
		}y.num[0]=i;
		while(!y.num[y.num[0]]&&y.num[0]>1)--y.num[0];
		return y;
	}
	il lll operator-(lll x){
		lll y;y.clear();ri int i;
		for(i=1;i<=num[0];++i){
			y.num[i]+=num[i]-x.num[i];
			if(y.num[i]<0)--y.num[i+1],y.num[i]+=10;
		}y.num[0]=i;
		while(!y.num[y.num[0]]&&y.num[0]>1)--y.num[0];
		return y;
	}
	il lll operator*(lll x){
		lll y;y.clear();ri int i,j,k;
		for(i=1;i<=num[0];++i){
			k=0;
			for(j=1;j<=x.num[0];++j)
				y.num[i+j-1]+=num[i]*x.num[j]+k,
					k=y.num[i+j-1]/10,y.num[i+j-1]%=10;
			y.num[i+x.num[0]]+=k;
		}y.num[0]=i+j;
		while(!y.num[y.num[0]]&&y.num[0]>1)--y.num[0];
		return y;
	}
}fact[2501],c[51][51],f[51];
int main(){
	return 0;
}


2

#include<bits/stdc++.h>
using namespace std;
char b[20005],m[11011]={"1"},w[11011],ww[100000]={"1"}; 
char ci[11101],cou[11011],op[10111],cnt[10111],os[11011],ok[1111];
void jia(char m[],char n[]){
	int len=0,op=0;
	int a[24090]={},b[24009]={},c[20049]={};
	char o[24009]={};
    int lenm=strlen(m);
    int lenn=strlen(n);
    for (int i=1;i<=lenm;i++){
        a[i]=m[lenm-i]-'0';
    }
    for (int i=1;i<=lenn;i++){
        b[i]=n[lenn-i]-'0';
    }
    len++;
    op=0;
    while(len<=lenm||len<=lenn){
    	c[len]=a[len]+b[len]+op;
    	op=c[len]/10;
    	c[len]%=10;
    	len++;
	}
	if (c[len+1]>0) len++;
	else c[len]=op;
	if (c[len]==0) len--;
    for (int i=1;i<=len;i++){
        o[i-1]=c[len+1-i]+'0';
    }
    strcpy(m,o);
    return;
}
void c(char s1[],char s2[]){
	int a[100000]={},b[100000]={},c[100000]={};;
	int len1=strlen(s1);
	int len2=strlen(s2);
	char s[100000]={};
	for(int i=1;i<=len1;i++)a[i]=s1[len1-i]-'0';
	for(int i=1;i<=len2;i++)b[i]=s2[len2-i]-'0';
	for(int i=1;i<=len1;i++){
		for(int j=1;j<=len2;j++){
			c[i+j-1]+=a[i]*b[j];
			c[i+j]+=c[i+j-1]/10;
			c[i+j-1]%=10;
		}
	}
	int len3=len1+len2;
	while(len3>1&&c[len3]==0)len3--;
	for(int i=1;i<=len3;i++){
		s[i-1]=c[len3+1-i]+'0';
	}
	strcpy(s1,s);
	return;
}
bool cmp(char x[],char y[]){
	int a=strlen(x);
	int b=strlen(y);
	if(a>b)return true;
	if(a==b&&strcmp(x,y)>0)return true;
	return false;
}
void jian(char s1[], char s2[]){
	int a[11111]={},b[11111]={},c[11111]={};
	int len1=strlen(s1);
	int len2=strlen(s2);
	char s[10000]={};
	len1=strlen(s1);
	len2=strlen(s2);
	for(int i=1;i<=len1;i++)a[i]=s1[len1-i]-'0';
	for(int i=1;i<=len2;i++)b[i]=s2[len2-i]-'0';
	int len3=max(len1,len2);
	for(int i=1;i<=len3;i++){
		c[i]+=a[i]-b[i];
		if(c[i]<0){
			c[i+1]--;
			c[i]+=10;
		}
	}
	while(len3>1 && c[len3]==0)len3--;
	for(int i=1;i<=len3;i++)s[i-1]=c[len3+1-i]+'0';
	strcpy(s1,s);
	return;
}
void chu(char s1[],char s2[]){
	b[0]='1';
	for(int i=1;i<=200;i++)b[i]='0';
	strcpy(op,s2);
    for(int i=200;i>=0;i--){
		while(cmp(s1,os)){
			jia(cnt,b);
			c(s2,cnt);
			strcpy(os,s2);
			strcpy(s2,op);
		} 
		jian(cnt,b);
		b[i]='\0';
		strcpy(os,ok);
	}
	jia(m,cnt);strcpy(w,m);c(w,s2); 
	if(!strcmp(w,s1))strcpy(s1,m);
	else strcpy(s1,cnt);
	return; 
}
int main(){
	return 0;
}

标签:return,int,s2,char,num,高精,lll
From: https://www.cnblogs.com/houburzyx/p/18248328

相关文章

  • 【开源样本库分享】Five-Billion-Pixels-ENVIFormat 五十亿像素高精度样本库分享
    很高兴给大家分享一个好消息,Five-Billion-Pixels-ENVIFormat五十亿像素开源样本库(ENVI格式)正式上线了!Five-Billion-Pixels样本库是一个为遥感、地理信息系统(GIS)和图像处理领域的研究和应用而精心打造的高质量样本库。为了让更多的人受益,我们决定制作并发布ENVI格式的五十亿像素......
  • java基于Vue+Spring boot前后端分离架构开发的一套UWB技术高精度定位系统源码
    java基于Vue+Springboot前后端分离架构开发的一套UWB技术高精度定位系统源码系统采用UWB高精度定位技术,可实现厘米级别定位。UWB作为一种高速率、低功耗、高容量的新兴无线局域定位技术,目前应用主要聚焦在室内外精确定位。在工业自动化、物流仓储、电力巡检、煤矿施工、自动......
  • 洛谷P1601 A+B Problem(高精)
    #include<iostream>#include<string>#include<cstring>#include<cstdio>usingnamespacestd;constintN=1005;structbign{intlen,s[N];bign(){memset(s,0,sizeof(s));len=1;}bign(intnum){*this=num;}......
  • 自动驾驶仿真测试实践:高精地图仿真
    引言  随着自动驾驶技术的快速发展,基于高精地图的自动驾驶功能已初步落地应用,并持续迭代升级。在研发测试阶段,多方面因素导致测试人员可能无法拿到控制器内部高精地图对应的OpenDRIVE文件①,使得仿真场景与控制器内部高精地图无法完全匹配,自动驾驶功能受限,得不到有效的测试验......
  • AD620ARZ高精度仪表放大器中文资料PDF数据手册引脚图产品手册产品参数特性
    产品说明:AD620是一款低成本、高精度仪表放大器,仅需一个外部电阻即可设置1至10,000的增益。此外,AD620采用8引脚SOIC和DIP封装,比分立式设计更小,功耗更低(最大电源电流仅为1.3mA),非常适合电池供电的便携式(或远程)应用。AD620具有40ppm(最大非线性值)的高精度、50μV(最大值)的低失调......
  • 高精度加法的实现
             这是C++算法基础-基础算法专栏的第七篇文章,专栏详情请见此处。引入    在C++语言中,int的可存储数据范围是-2147483648~2147483647,longlong的可存储数据范围是-9223372036854775808~9223372036854775807,但是如果一些数据比longlong的可存储数据......
  • #A. C08.L01.高精度加法与减法.概述
    一、高精度运算什么是高精度运算?我们都知道,数据类型是有大小范围的。整型数据int能表示的数的范围为:-2147483648至2147483647(-2^31至2^31-1)长整型数据longlong能表示的数的范围为:-9223372036854775808~9223372036854775807(-2^63至2^63-1)。那么当所要求解的数的大小还要......
  • 高精度 减- 高精度
    #include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>a,b;stringm,n;cin>>m>>n;for(inti=m.size()-1;i>=0;i--){a.push_back(m[i]-'0');}for(inti=n.si......
  • 【C/C++项目】——高精度计算pi值
    项目概述导入在现代科学研究和技术开发中,高精度的数值计算是不可或缺的。特别是在物理、天文学、密码学等领域,精确的大数运算对于理论模型的验证和应用实现至关重要。我们要做的是利用该类,计算圆周率到数千甚至数万位的精度,展示其处理复杂数学问题的能力。具体问题描述......
  • 高精度地图制作-更新和维护
    高精度地图制作-更新和维护之前有写过一篇高精度地图制作的介绍,后面也思考了一些问题,其中比较困扰我的是高精度地图如何做到实时更新?高精度地图的维护成本?最近看了ZENRIN公司关于高精度地图的介绍PPT[1],得到了很大的启发,简单的做一个学习记录。附赠自动驾驶最全的学习资料......