zoukankan      html  css  js  c++  java
  • 高精度,乘法加法

    #include <cstring>

    #include <cstdio>

    #include <algorithm>

    #include <cmath>

    #include <cstdlib>

    #include <vector>

    #include <iostream>

    #define lson rt<<1

    #define rson rt<<1|1

    using namespace std;

    typedef long long ll;

    typedef pair<int, int> P;

    const int maxn=2e2+10;

    struct dashu

    {

        int s[maxn*5];

        int flag,len;

        void ini()

        {

            memset(s, 0, sizeof s);

            flag=len=1;

        }

        void pri()

        {

            for(int i=0;i<len;i++)

            {

                printf("%c",s[len-i-1]+'0');

            }

        }

        void jinwei()

        {

            for(int i=0;i<len;i++)

            {

                if(s[i]>9)

                {

                    s[i+1]+=s[i]/10;

                    s[i]=s[i]%10;

                    len=max(i+2,len);

                }

            }

        }

    };

    bool cmp(dashu d1,dashu d2)

    {

        if(d1.flag==1&&d2.flag==1)

        {

            if(d1.len>d2.len)

                return 0;

            else if(d1.len<d2.len)

                return 1;

            else

            {

                int len=d1.len;

                for(int i=0;i<len;i++)

                    if(d1.s[len-1-i]<d2.s[len-1-i])

                        return 1;

                    else if(d1.s[len-1-i]>d2.s[len-1-i])

                        return 0;

                return 1;

            }

        }

        else if(d1.flag==-1&&d2.flag==-1)

        {

            if(d1.len>d2.len)

                return 1;

            else if(d1.len<d2.len)

                return 0;

            else

            {

                int len=d1.len;

                for(int i=0;i<len;i++)

                    if(d1.s[len-1-i]<d2.s[len-1-i])

                        return 0;

                    else if(d1.s[len-1-i]>d2.s[len-1-i])

                        return 1;

                return 1;

            }

        }else if(d1.flag==1&&d2.flag==-1)

        {

            return 0;

        }else if(d1.flag==-1&&d2.flag==1)

        {

            return 1;

        }

        return 1;

    }

    dashu add(dashu d1,dashu d2)

    {

        dashu ans;

        ans.ini();

        if((d1.flag==1&&d2.flag==1)||(d1.flag==-1&&d2.flag==-1))

        {

            int len=max(d1.len,d2.len);

            for(int i=0;i<len;i++)

                ans.s[i]=d1.s[i]+d2.s[i];

            ans.len=len;

            ans.flag=d1.flag;

            ans.jinwei();

        }

        return ans;

    }

    dashu mul(dashu d1,dashu d2)

    {

        dashu ans,t;

        ans.ini();

        t.ini();

        ans.flag=d1.flag*d2.flag;

        for(int i=0;i<d1.len;i++)

        {

            int chengzi=d1.s[i];

            t.ini();

            t.len=i+d2.len;

            for(int j=0;j<d2.len;j++)

            {

                t.s[i+j]=chengzi*d2.s[j];

            }

            t.jinwei();

            ans=add(ans, t);

        }

        if(ans.s[ans.len-1]==0)

            d1.pri();

        return ans;

    }

    dashu zhuanhuan(int n)

    {

        dashu t2;

        t2.ini();

        for(int j=0;n!=0;j++)

        {

            t2.s[j]=n%10;

            n/=10;

            t2.len=j+1;

        }

         if(t2.s[t2.len-1]==0)

             cout<<n<<endl;

        return t2;

    }

  • 相关阅读:
    C#读写xml文件
    实现SQL_SERVER的双机实时备份
    Microsoft .NET Pet Shop 4 架构与技术分析
    xp系统运行asp.net时候出现“服务器应用程序不可用”的必杀
    获取服务器根域名
    C#如何创建Xml文件
    用C#创建XML[简单代码]
    关闭Viewstate
    数字签名
    IE插件
  • 原文地址:https://www.cnblogs.com/King-of-Dark/p/12423312.html
Copyright © 2011-2022 走看看