专栏文章

高精度

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioxnc8t
此快照首次捕获于
2025/12/03 02:49
3 个月前
此快照最后确认于
2025/12/03 02:49
3 个月前
查看原文
使用数组/字符串存储
倒着存
CPP
#include<bits/stdc++.h>
using namespace std;
struct bg{
	int len;
	int num[10010];
	bg(){
		len=1;
		memset(num,0,sizeof(num)); 
	}
	void init(string s){
		len=s.size();
		for(int i=0;i<len;i++){
			num[i]=s[len-1-i]-'0';
		}
	}
};
//加法运算
bg add(bg a,bg b){
	bg c;
	c.len=max(a.len,b.len);
	for(int i=0;i<c.len;i++){
		c.num[i]+=a.num[i]+b.num[i];
		c.num[i+1]+=c.num[i]/10;
		c.num[i]%=10;
	}
	if(c.num[c.len]) c.len++;
	return c;
} 
//乘法运算 
bg cheng(bg a,bg b){
	bg c;
	c.len=a.len+b.len+1;
	for(int i=0;i<a.len;i++){
		for(int j=0;j<b.len;j++){
			c.num[i+j]+=a.num[i]*b.num[j];
			c.num[i+j+1]+=c.num[i+j]/10;
			c.num[i+j]%=10;
		}
	}
	while(c.len>1&&c.num[c.len-1]==0) c.len--;
	return c;
} 
bg chu(bg a,int b){
	bg c;
	c.len=a.len;
	int rest=0;
	for(int i=a.len-1;i>=0;i--){
		rest=rest*10+a.num[i];
		c.num[i]=rest/b;
		rest%=b;
	}
	while(c.len>1&&c.num[c.len-1]==0) c.len--;
	return c;
}
int main(){
	int b;
    string s1,s2;cin>>s1>>b;
    bg a;
    a.init(s1);
    bg c=chu(a,b);
    for(int i=c.len-1;i>=0;i--){
    	cout<<c.num[i];
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...