• Single Round Math sdut3260高精度除以低精度


    做高精度除法,从高位开始除。。高位除剩下的我们就*10扔给低一位处理,最终余数是在最低位取模得到的

    高精除以高精,我们可以这么做,让除数在后面补零,刚好小于被除数,作若干次减法,减的次数加到商里面

    然后如果除数后面有零,我们就去掉一个0,商*=10,直到除数刚好小于被除数,统计减法次数加到商里面

    如果我们发现去掉所有零,被除数仍然是小于除数的。。那么我们就做完了除法。。(高精度带余除法

    这个题就是算高精度对11取模,。。输出答案别忘了break;

    两种解法

    高精除以低精

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int s[1005],p[1005];
    char a[1005],b[1005];
    int main(){
        int T;scanf("%d",&T);
        while(T--){
            scanf("%s%s",a,b);
            int la=strlen(a),lb=strlen(b),flag=0,i,k=11;
            if(la!=lb) {printf("NO
    ");continue;}
            for(i=0;i<la;++i){
                if(a[i]!=b[i]) {
                    printf("NO
    ");flag=1;break;
                }
            }
            if(flag) continue;
            s[0]=la;
            for(i=0;i<la;++i){
                s[i+1]=a[la-i-1]-'0';
            }
            int r;
            for(i=s[0];i>=1;--i){
                if(i==1) r=s[i]%k;
                if(i!=1) s[i-1]+=s[i]%k*10;
                s[i]/=k;
            }
            if(r==0)     printf("YES
    ");
            else         printf("NO
    ");
        }    
        return 0;
    }

    直接取模

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int s[1005],p[1005];
    char a[1005],b[1005];
    int main(){
        int T;scanf("%d",&T);
        while(T--){
            scanf("%s%s",a,b);
            int la=strlen(a),lb=strlen(b),flag=0,i,k=11;
            // printf("(%d,%d)
    ",la,lb);
            if(la!=lb) {printf("NO
    ");continue;}
            for(i=0;i<la;++i){
                if(a[i]!=b[i]) {
                    printf("NO
    ");flag=1;break;
                }
            }
            if(flag) continue;
            int ans=0;
            for(i=0;i<la;++i){
                ans=(ans*10+a[i]-'0')%11;
            }
            if(ans==0) printf("YES
    ");
            else        printf("NO
    ");
        }    
        return 0;
    }
  • 相关阅读:
    solidworks 学习 (二)洗手液瓶
    solidworks 学习 (一)螺丝刀
    tensorflow 2.0 学习(三)MNIST训练
    tensorflow 2.0 学习(二)线性回归问题
    tensorflow 2.0 学习(一)准备
    sscanf linux-c从一个字符串中读进与指定格式相符的数据
    Linux-c glib库hash表GHashTable介绍
    Linux-c给线程取名字
    linux-c getopt()参数处理函数
    golang Linux下编译环境搭建
  • 原文地址:https://www.cnblogs.com/linkzijun/p/6582331.html
Copyright © 2020-2023  润新知