高精度加减乘除

高精度加法

题目链接:高精度加法

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+5;
int a[N],b[N];
int c[N];
int n,m;
string s1,s2;

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>s1>>s2;
	
	int n=s1.length();
	int m=s2.length();
	for(int i=1;i<=n;i++){
		a[n-i+1]+=s1[i-1]-'0';
	}
	for(int i=1;i<=m;i++){
		b[m-i+1]+=s2[i-1]-'0';
	}
	int jw=0;
	for(int i=1;i<=max(n,m);i++){
		c[i]=a[i]+b[i]+jw;
		jw=c[i]/10;
		c[i]%=10;
	}

	if(jw){
		c[max(n,m)+1]=jw;
	}
	int k=max(n,m)+1;
	while(c[k]==0)k--;

	for(int i=k;i>=1;i--){
		cout<<c[i];
	}

    return 0;
}

高精度减法

题目链接:高精度减法

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N =1e5+5;
int a[N],b[N],c[N];
string s1,s2;
bool flag=true;

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>s1>>s2;
    int n=s1.length();
    int m=s2.length();
    if(n<m){
        flag=false;
    }
    else if(n==m){
        int l=0;
        while(s1[l]==s2[l]&&l<=n)l++;
        if(s1[l]<s2[l]){
            flag=false;
        }
    }
    int cnt1=0,cnt2=0;
    if(flag){
        for(int i=1;i<=n;i++){
            a[++cnt1]=s1[i-1]-'0';
        }
        for(int i=1;i<=m;i++){
            b[++cnt2]=s2[i-1]-'0';
        }
    }
    else{
        for(int i=1;i<=m;i++){
            a[++cnt1]=s2[i-1]-'0';
        }
        for(int i=1;i<=n;i++){
            b[++cnt2]=s1[i-1]-'0';
        }
    }

    reverse(a+1,a+1+cnt1);
    reverse(b+1,b+1+cnt2);

    int jw=0;
    for(int i=1;i<=max(n,m);i++){
        c[i]=a[i]-b[i]-jw;
        if(c[i]<0)jw=1;
        else jw=0;
        c[i]=(c[i]+10)%10;
    }

    int k=max(n,m)+1;
    while(c[k]==0&&k>1)k--;//注意k要大于1

    if(!flag)cout<<'-';
    for(int i=k;i>=1;i--){
        cout<<c[i];
    }

    return 0;
}

高精度乘法

题目链接:高精度乘法

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+5;
int a[N],b[N],c[N];
string s1,s2;

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>s1>>s2;
    int n=s1.length();
    int m=s2.length();

    for(int i=1;i<=n;i++){
        a[n-i+1]=s1[i-1]-'0';
    }
    for(int i=1;i<=m;i++){
        b[m-i+1]=s2[i-1]-'0';
    }
    int jw=0;
    for(int i=1;i<=n;i++){
        jw=0;
        for(int j=1;j<=m;j++){
            c[i+j-1]+=a[i]*b[j]+jw;
            jw=c[i+j-1]/10;
            c[i+j-1]%=10;
        }
        c[i+m]+=jw;
    }

    int k=n+m+1;
    while(c[k]==0&&k>1)k--;
    
    for(int i=k;i>=1;i--){
        cout<<c[i];
    }

    return 0;
}

高精度除法

题目链接:高精度除法

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5+5;
int a[N],c[N];
string s1;
int b;

signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    cin>>s1>>b;
    int n=s1.length();
    for(int i=1;i<=n;i++){
        a[i]=s1[i-1]-'0';
    }

    int x=0;
    for(int i=1;i<=n;i++){
        c[i]=(x*10+a[i])/b;
        x=(x*10+a[i])%b;
    }

    int sb=1;
    while(c[sb]==0&&sb<n){
        sb++;
    }

    for(int i=sb;i<=n;i++){
        cout<<c[i];
    }
    cout<<"\n";
    cout<<x;

    return 0;
}

相关推荐

  1. 精度乘除

    2024-04-21 03:30:02       39 阅读
  2. 第一章 基础算法(二)(精度乘除

    2024-04-21 03:30:02       56 阅读
  3. php乘除函数

    2024-04-21 03:30:02       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 03:30:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 03:30:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 03:30:02       82 阅读
  4. Python语言-面向对象

    2024-04-21 03:30:02       91 阅读

热门阅读

  1. Graphql mock 方案

    2024-04-21 03:30:02       37 阅读
  2. fabricjs控制背景图和画布图片展示

    2024-04-21 03:30:02       36 阅读
  3. 【学习心得】Pandas处理缺失值的思路

    2024-04-21 03:30:02       33 阅读
  4. 正则表达式笔记

    2024-04-21 03:30:02       33 阅读
  5. 【代码随想录刷题记录】LeetCode704二分查找

    2024-04-21 03:30:02       34 阅读
  6. 【备忘录】openssl记录

    2024-04-21 03:30:02       38 阅读
  7. openssl3.2 - exp - 用base64后的字符串作为配置项的值

    2024-04-21 03:30:02       31 阅读
  8. 记一次etcd数据恢复

    2024-04-21 03:30:02       31 阅读
  9. Linux 磁盘分区详解以及知识点分解

    2024-04-21 03:30:02       39 阅读
  10. SpringIOC容器Bean对象的实例化模拟

    2024-04-21 03:30:02       41 阅读
  11. daemonset会部署到主节点吗

    2024-04-21 03:30:02       31 阅读
  12. LeetCode 665. 非递减数列

    2024-04-21 03:30:02       36 阅读