zoukankan      html  css  js  c++  java
  • 【最蔡版】高精度A+B

    【引子】A+B的神奇解法(更多神奇解法请点击此处获取):

    #include<bits/stdc++.h>
    using namespace std;
    #define i int a,b;
    #define ak cin>>a>>b;
    #define ioi cout<<a+b;
    int main(){i ak ioi}
    #include<bits/stdc++.h>
    using namespace std;
    int dp[1005][1005];
    int main()
    {
    	int a,b;
    	cin>>a>>b;
    	dp[0][1]=a,dp[1][0]=b;
    	for(int i=1;i<=1000;i++)
    	{
    		for(int j=1;j<=1000;j++) dp[i][j]=dp[i-1][j]+dp[i][j-1];
    	}
    	cout<<dp[1][1];
    	return 0;
    }
    

      

    #include<bits/stdc++.h>
    using namespace std;
    int a,b;
    int c[100005];
    void add(int x,int y)
    {
        while(x<=a+b) c[x]+=y,x+=x&-x;
    }
    int ask(int x)
    {
        int ans=0;
        while(x) ans+=c[x],x-=x&-x;
        return ans;
    }
    int main()
    {
        scanf("%d%d",&a,&b);
        for(int i=1;i<=a+b;i++) add(i,1);
        printf("%d",ask(a)+ask(b));
        return 0;
    }
    

      

    今天,我们介绍一下高精度A+B。所谓“高精度”,即指超过(unsigned)long long范围的运算。这样的整数无法在32位的计算机上使用任何数据类型存储,这时我们就需要把整数当做字符串来存储。

    将数据存入字符串后,然后将个位对齐,这时就可以模拟竖式运算进行加法了,注意进位的问题。减法的方法类似。

    #include<bits/stdc++.h>
    using namespace std;
    char a[505],b[505];
    char A[505],B[505],ans[505];
    int main()
    {
    	cin>>a+1>>b+1;//输入
    	int la=strlen(a+1),lb=strlen(b+1);
    	for(int i=1;i<=la;i++) A[i]=a[la-i+1]-'0';
    	for(int i=1;i<=lb;i++) B[i]=b[lb-i+1]-'0';//颠倒顺序,使两个加数个位对齐
    	for(int i=1;i<=max(la,lb);i++)
    	{
    		ans[i]+=A[i]+B[i];//逐位相加,注意是+=而不是=,因为有进位
    		if(ans[i]>=10) ans[i]-=10,ans[i+1]++;//进位的操作
    	}
    	bool xyds=0;//寻找第一个有有效数字(大于0)的数位
    	for(int i=500;i>=1;i--)//按数位从高到低输出
    	{
    		if(ans[i]) xyds=1;
    		if(xyds) putchar(ans[i]+'0');//输出
    	}
    	if(!xyds) putchar('0');//若和为0,则特判一番
    	return 0;
    }
    

      

  • 相关阅读:
    Java微信分享接口开发
    lintcode 刷题 by python 部分链表题总结(2)
    基于CART的回归和分类任务
    机器学习: K-means 聚类
    python 中的堆 (heapq 模块)应用:Merge K Sorted Lists
    名人、皇家谱系
    python实现数组和链表的归并排序
    Python 正则 —— 捕获与分组
    ArcGIS中的数据连接问题——数据类型不统一
    Spring boot 搭建
  • 原文地址:https://www.cnblogs.com/dong-ji-yuan/p/11309428.html
Copyright © 2011-2022 走看看