• 高精度模板


    放几个高一上写的模板,高精除法什么的好像并没有什么用,写过板后就没用过了。

    //Twenty
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<cstdlib>
    #include<algorithm>
    using namespace std;
    const int maxn=200000+100;
    const int maxm=400000+100;
    int m,n,x,y,q,flag;
    int vis[maxn];
     
    int read(){
        int n=0;char c=getchar();
        while(c<'0'||c>'9')c=getchar();
        while(c>='0'&&c<='9')n=n*10+c-'0',c=getchar();
        return n;
    }
     
    int nxt[maxm],fir[maxn],to[maxm],ncnt;
    void add_(int u,int v){
        nxt[++ncnt]=fir[u];fir[u]=ncnt;to[ncnt]=v;
        nxt[++ncnt]=fir[v];fir[v]=ncnt;to[ncnt]=u;
    }
     
     
    void dfs(int u){
        for(int i=fir[u];i;i=nxt[i]){
            int v=to[i];
            if(vis[v]) continue;
            for(int j=fir[v];j;j=nxt[j]){
                if(vis[to[j]]) continue;
                vis[to[j]]=1;dfs(to[j]);
            }
        }
        return;
    }
     
    int main()
    {
        n=read();m=read();
        for(int i=1;i<=m;i++){
            int u,v;
            u=read();v=read();
            if(u==v)flag=1;
            else add_(u,v);
        }
        vis[1]=1;
        if(!flag) dfs(1);
        q=read();
        while(q--){
            x=read();y=read();
            if(x==y||flag){
                printf("Yes
    ");
                continue;
            }
            else{
                if(vis[x]==vis[y]) printf("Yes
    ");
                else printf("No
    ");
            }
        }
        return 0;
    }
    高精求阶乘和
    //Twenty
    #include<cstdio>
    #include<cstdlib>
    #include<iostream> 
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    int a[505],b,c[505];
    char s[505];
    int main()
    {
        cin>>s;
        cin>>b;
        a[0]=strlen(s);
        for(int i=0;i<a[0];i++)
        a[i+1]=s[i]-'0';
        c[0]=a[0];
        int x=0;
        for(int i=1;i<=a[0];i++)
        {
            c[i]=(x*10+a[i])/b;
            x=(x*10+a[i])%b;
        }
        int l=1;
        while(l<c[0]&&c[l]==0)
        l++;
        for(int i=l;i<=c[0];i++)
        cout<<c[i];
        
    }
    高精除以低精
    //Twenty
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<iostream>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    int a[505],b[505],c[505];
    void read(int a[]) {
        char ch[505];
        int cd;
        cin>>ch;
        a[0]=strlen(ch);
        for(int i=0;i<a[0];i++)
        {
            a[i+1]=ch[a[0]-i-1]-'0';
        }
    }
    int compare(int a[],int b[]) {
        if(a[0]>b[0])return 1;
        if(a[0]<b[0])return -1;
        for(int i=a[0];i>=1;i--)
        {
            if(a[i]>b[i])return 1;
            if(a[i]<b[i])return -1;
        }
        return 0;
    }
    void numcpy(int q[],int p[],int i) {//把p粘到q的第i位 
        q[0]=p[0]+i-1;
        for(int j=1;j<=p[0];j++)
        {
           q[j+i-1]=p[j];
        }
        return ;
    }
    void jian(int a[],int b[]) {
        int flag=compare(a,b);
        if(flag==0) a[0]=0;
        else 
        {
            for(int i=1;i<=a[0];i++)
            {
                if(a[i]<b[i])
                {
                    a[i+1]--;
                    a[i]+=10;
                }
                a[i]=a[i]-b[i];
            }
            while(a[0]>0&&a[a[0]]==0)a[0]--;
        }
        return;
    }
    void jisuan() {
        c[0]=a[0]-b[0]+1;
        int smg[505];
        for(int i=c[0];i>=1;i--)
        {
            memset(smg,0,sizeof(smg));
            numcpy(smg,b,i); 
            while(compare(a,smg)>=0){c[i]++;jian(a,smg);}
        }
        while(c[0]!=0&&c[c[0]]==0)c[0]--;
    }
    void print(int c[]) {
        if(c[0]==0)cout<<"0"<<endl;
        else{
        
        for(int i=c[0];i>=1;i--)
        cout<<c[i];
        cout<<endl;}
    }
    int main()
    {
        read(a);
        read(b);
        jisuan();
        print(a);
      return 0;
    }
    高精除以高精

     

  • 相关阅读:
    关于 Span 的一切:探索新的 .NET 明星:5. .NET 运行时的处理
    关于 Span 的一切:探索新的 .NET 明星: 3.什么是 Memory<T>,以及为什么你需要它?
    关于 Span 的一切:探索新的 .NET 明星: 4. Span<T> 和 Memory<T> 是如何与 .NET 库集成的?
    Configuring Kerberos with OpenLDAP backend
    gradle:secure protocol (like HTTPS) or allow insecure protocols
    Kerberos and LDAP
    EV录屏
    [转]在 WIN10 环境下,设置自己写的 程序 开机自动 启动的方法
    [转]go context之WithTimeout的使用
    [转]公司为什么要使用OKR,目的是什么?
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7474562.html
Copyright © 2020-2023  润新知