• 高精


     

    高精加

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    #define FORa(i,s,e) for(int i=s;i<=e;i++)
    #define FORs(i,s,e) for(int i=s;i>=e;i--)
    
    using namespace std;
    
    const int N=100000;
    string sta,stb;
    int a[N+1],b[N+1],len;
    void Init(int a[],string &st)
    {
        cin>>st,a[0]=st.size();
        FORa(i,1,a[0]) a[i]=st[a[0]-i]-'0';
    }
    int main()
    {
        Init(a,sta),Init(b,stb),len=a[0]>b[0]?a[0]:b[0]+1;//记得判断两者解的长度 
        FORa(i,1,len) a[i]+=b[i],a[i+1]+=a[i]/10,a[i]%=10;
        while(!a[len]&&len>1) len--;//删除前导零 
        FORs(i,len,1) printf("%d",a[i]);
        return 0;
    }

    高精减

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream> 
    #define FORa(i,s,e) for(int i=s;i<=e;i++)
    #define FORs(i,s,e) for(int i=s;i>=e;i--)
    using namespace std;
    
    const int N=100000;
    int a[N+1],b[N+1];
    string sta,stb;
    void Init(int a[],string &st)
    {
        cin>>st,a[0]=st.size();
        FORa(i,1,a[0]) a[i]=st[a[0]-i]-'0';
    }
    int main()
    {
        Init(a,sta),Init(b,stb);
        FORa(i,1,a[0])
        {
            a[i]-=b[i];
            if(a[i]<0) a[i+1]--,a[i]+=10;//借位 
         }
         while(!a[a[0]]&&a[0]>1) a[0]--;//删除前导零 
         FORs(i,a[0],1) printf("%d",a[i]);
        return 0;
    }

    高精乘

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    #define FORa(i,s,e) for(int i=s;i<=e;i++)
    #define FORs(i,s,e) for(int i=s;i>=e;i--)
    
    using namespace std;
    
    const int N=1000;
    int a[N+1],b[N+1],c[N+1];
    string sta,stb;
    void Init(int p[],string &s)
    { 
        cin>>s,p[0]=s.size();
        FORa(i,1,p[0]) p[i]=s[p[0]-i]-'0';
    } 
    int main()
    {
        Init(a,sta),Init(b,stb);
        FORa(i,1,a[0])    
        {
            int x=0;
            FORa(j,1,b[0])
                c[i+j-1]=a[i]*b[j]+c[i+j-1]+x,x=c[i+j-1]/10,c[i+j-1]%=10;//加上本身与前者的进位与本应该加上的值 
            c[i+b[0]]=x;//别忘记处理进位的小尾巴 
        }
        c[0]=a[0]+b[0]+1;
        while(!c[c[0]]&&c[0]>1)  c[0]--;//删除前导零 
        FORs(i,c[0],1) printf("%d",c[i]);
        return 0;
    }

    高精除

    #include<stdio.h>
    #include<stdlib.h>
    #include<iostream>
    #define FORa(i,s,e) for(int i=s;i<=e;i++)
    #define FORs(i,s,e) for(int i=s;i>=e;i--)
    
    using namespace std;
    
    const int N=1000;
    int a[N+1],b,c[N+1];
    string s;
    void Init(int p[],string &s)
    { 
        cin>>s,p[0]=s.size();
        FORa(i,1,p[0]) p[i]=s[i-1]-'0';//存储方式与其它高精度处理不一样,正序储存 
    } 
    int main()
    {
        int x=0;
        Init(a,s),scanf("%d",&b);
        FORa(i,1,a[0])
        {
            c[i]=(x*10+a[i])/b;//注意商与余数要继承之前的答案 
            x=(x*10+a[i])%b;
        } 
        int sp=1;
        while(!c[sp]&&sp<a[0]) sp++;//删除前导零,但因为储存方式的不一样,删除的方式也不一样 
        FORa(i,sp,a[0]) printf("%d",c[i]);
        return 0;
    }

  • 相关阅读:
    关于m3u8格式的视频文件ts转mp4下载和key加密问题
    Flask報錯 KeyError 'SQLALCHEMY_TRACK_MODIFICATIONS'.md
    ajax post data 获取不到数据,注意 content-type的设置 、post/get(转)
    Ajax 的一些概念 解析
    Apache2 服务配置 ubuntu16.04 + django1.11
    GitHub 远程仓库 de 第一次配置
    Django自带后台admin的使用配置
    每次启动虚拟机都要重置网卡设置,否则无法上网,很烦
    pip崩了, 解决 ModuleNotFoundError: No module named 'pip'.
    vue proxyTable
  • 原文地址:https://www.cnblogs.com/SeanOcean/p/11181793.html
Copyright © 2020-2023  润新知