博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大数除法。。。赶得好急,借鉴牛人的写法了
阅读量:5303 次
发布时间:2019-06-14

本文共 1351 字,大约阅读时间需要 4 分钟。

#include<stdio.h>

#include<string.h>
#include<stdlib.h>
#define MaxLen 200
int SubStract(int *p1,int *p2,int len1,int len2)
{
    int i;
    if(len1<len2)
         return -1;
    if(len1==len2)
    {
        for(i=len1-1;i>=0;i--)
        {
            if(p1[i]>p2[i])
                break;
            else if(p1[i]<p2[i])
                return -1;
        }
    }
    for(i=0;i<=len1-1;i++)
    {
        p1[i]-=p2[i];
        if(p1[i]<0)
        {
            p1[i]+=10;
            p1[i+1]--;
        }
    }
    for(i=len1-1;i>=0;i--)
        if(p1[i])
           return (i+1);
    return 0;
}

int main()

{
    int n,k,i,j;
    int len1,len2;
    int nTimes;
    int nTemp;
    int num_a[MaxLen];
    int num_b[MaxLen];
    int num_c[MaxLen];
    char str1[MaxLen+1];
    char str2[MaxLen+1];
   
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",str1);
        scanf("%s",str2);
       
        memset(num_a,0,sizeof(num_a));
        memset(num_b,0,sizeof(num_b));
        memset(num_c,0,sizeof(num_c));
       
        len1=strlen(str1);
        len2=strlen(str2);
       
        for(j=0,i=len1-1;i>=0;j++,i--)
           num_a[j]=str1[i]-'0';
        for(j=0,i=len2-1;i>=0;j++,i--)
           num_b[j]=str2[i]-'0';
          
        if(len1<len2)
        {
            printf("0\n");
            continue;
        }
        nTimes=len1-len2;
        for(i=len1-1;i>=0;i--)
        {
            if(i>=nTimes)
               num_b[i]=num_b[i-nTimes];
            else
               num_b[i]=0;
        }
        len2=len1;
        for(j=0;j<=nTimes;j++)
        {
            while((nTemp=SubStract(num_a,num_b+j,len1,len2-j))>=0)
            {
                len1=nTemp;
                num_c[nTimes-j]++;
            }
        }

        for(i=nTimes;num_c[i]==0&&i>=0;i--);   //原来是i=MaxLen-1,感觉没必要-.-

        if(i>=0)
            for(;i>=0;i--)
                printf("%d",num_c[i]);
        else
            printf("0");
        printf("\n");
    }
    return 0;
}
      

转载于:https://www.cnblogs.com/get-an-AC-everyday/p/4169675.html

你可能感兴趣的文章
C语言中求最大最小值的库函数
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
pandas 修改指定列中所有内容
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
开发进度一
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[LeetCode] 55. Jump Game_ Medium tag: Dynamic Programming
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>