当前位置: 代码迷 >> 综合 >> 1017 A除以B 高精度除低精度
  详细解决方案

1017 A除以B 高精度除低精度

热度:33   发布时间:2023-12-06 03:42:24.0

本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 A=B×Q+R 成立。

输入格式:

输入在一行中依次给出 A 和 B,中间以 1 空格分隔。

输出格式:

在一行中依次输出 Q 和 R,中间以 1 空格分隔。

输入样例:

123456789050987654321 7

结尾无空行

输出样例:

17636684150141093474 3

结尾无空行

#include <stdio.h>
#include <string.h>
char w[1001];
int s[1001];
int main()
{
    int x=0,b;
    scanf("%s %d",w,&b);
    int len=strlen(w);
    for(int i=0;i<len;++i)
    {
        x=(x*10+(w[i]-'0'));
        s[i]=x/b;
        x%=b;
    }
    int flag=0;
    for(int i=0;i<len;++i)
    {
        if(s[i]==0) continue;
        else 
        {
            for(int j=i;j<len;++j)
            {
                printf("%d",s[j]);
                flag=1;
            }
            break;
        }
    }
    if(flag==0) printf("0");
    printf(" %d",x);
    return 0;
}

个人觉的这串代码写高精度除低精度是不错的至少是比网上的有些好,然后就是这个去前导0的操作值得学习,就是去遍历,然后遇到不是的就全输出,还有就是当被除数为1的时候,要分类讨论,整体思想就是这样,其他的题目碰到再说吧,没有题目,写错了,就尴尬了,加油。