zoukankan      html  css  js  c++  java
  • 高精度(加减乘除

     https://www.cnblogs.com/ECJTUACM-873284962/p/6509429.html

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<string>
     6 #include<cmath>
     7 #include<set>
     8 #include<vector>
     9 #include<stack>
    10 #include<queue>
    11 #include<map>
    12 using namespace std;
    13 #define ll long long
    14 #define se second
    15 #define fi first
    16 const int INF= 0x3f3f3f3f;
    17 const int N=4e6+5;
    18 
    19 string s1,s2;
    20 int a[2001],b[2001],c[4002],len1,len2;
    准备工作
     1 void cun()
     2 {
     3     cin>>s1>>s2;
     4     len1=s1.length();
     5     len2=s2.length();
     6     for(int i=1;i<=len1;i++)
     7         a[i]=s1[len1-i]-'0';
     8     for(int i=1;i<=len2;i++)
     9         b[i]=s2[len2-i]-'0';
    10 }
    字符串输入,化为数组
     1 int compare()
     2 {
     3     if(len1>len2)   return 1;
     4     if(len1<len2)   return -1;
     5     for(int i=0;i<len1;i++){
     6         if(s1[i]>s2[i]) return 1;
     7         if(s1[i]<s2[i]) return -1;
     8     }
     9     return 0;
    10 }
    比较两个输入的数 的大小
     1 void Plus()
     2 {
     3     int w=max(len1,len2);
     4     for(int i=1;i<=w;i++)
     5     {
     6         a[i+1] +=(a[i]+b[i])/10;
     7         a[i] =(a[i]+b[i])%10;
     8     }
     9     if(a[w+1] ) w++;
    10     for(int i=w;i>=1;i--)
    11         cout<<a[i];
    12 }
    加法
     1   void Minus()
     2 {
     3     int sign=compare();
     4     int w=max(len1,len2);
     5     if(sign==0){
     6         cout<<0<<endl; return;
     7     }
     8     if(sign==1){
     9         for(int i=1;i<=w;i++)
    10         {
    11             if(a[i]<b[i]) a[i]+=10, a[i+1]--;
    12             a[i]=a[i]-b[i];
    13         }
    14     }
    15     if(sign==-1){
    16         for(int i=1;i<=w;i++)
    17         {
    18             if(b[i]<a[i]) b[i]+=10, b[i+1]--;
    19             a[i]=b[i]-a[i];
    20         }
    21         cout<<'-';
    22     }
    23     while(a[w]==0){
    24         w--;
    25     } //首不能为0:
    26     for(int i=w;i>=1;i--)
    27             cout<<a[i];
    28 }
    减法(需要compare函数了)
     1 void Multiply() //高精度*高精度
     2 {
     3     int len=len1+len2;
     4     for(int i=0;i<len1;i++)  //只能都从0开始。。上面的cun()函数 要s1[len1-i-1]
     5     {
     6         for(int j=0;j<len2;j++)
     7         {
     8             c[i+j] += a[i]*b[j];
     9             c[i+j+1] +=  c[i+j]/10;
    10             c[i+j] = c[i+j]%10;
    11         }
    12     }
    13         if(c[len]==0) len--;//判断存不存在首位进位的情况
    14         if(c[len-1]==0) //判断存不存在 0*100=0 这样的情况
    15             cout<<0;
    16         else
    17             for(int i=len-1;i>=0;i--)
    18                 cout<<c[i];
    19 }
    乘法(高精度*高精度)

    高精度除以低精度

  • 相关阅读:
    Docker安装及简单使用
    常用编程语言注释符
    常用正则标记
    Android studio 使用startService报错:IllegalStateException
    Mybatis映射文件中#取值时指定参数相关规则
    IDEA Maven项目的Mybatis逆向工程
    循环结构
    每日思考(2020/03/05)
    分支结构
    每日思考(2020/03/04)
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9288426.html
Copyright © 2011-2022 走看看