【PAT】(乙级)1017. A除以B (20)

来源:互联网 发布:淘宝开店申请流程 编辑:程序博客网 时间:2024/06/04 19:45

1017. A除以B (20)

  • 时间限制 100 ms
  • 内存限制 65536 kB
  • 代码长度限制 8000 B
  • 判题程序 Standard
  • 作者 CHEN, Yue

一、题目

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

输入格式:

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

输出格式:

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

输入样例:
123456789050987654321 7
输出样例:
17636684150141093474 3

二、Tips

Tips: 反正Java的BigInteger妥妥超时。

//超时代码Scanner cin = new Scanner(System.in);BigInteger a = new BigInteger(cin.next());BigInteger b = new BigInteger(cin.next());System.out.println(a.divide(b) + " " + a.mod(b));

三、代码

#include <stdio.h>#include <string.h>void f(char s[], int n) {    int i,r[strlen(s)];    int m = 0;    for (int i = 0; i < strlen(s); i++) {        r[i] = (m * 10 + s[i] - '0') / n;        m = (m * 10 + s[i] - '0') % n;    }    int start = 0;    for(i=0; i<strlen(s);i++){        if(r[i]!=0){            start=i;            break;        }    }    for(i=start;i<strlen(s);i++){        printf("%d",r[i]);    }    printf(" %d\n",m);}int main(){    char s[1005];    int n;    scanf("%s %d",s,&n);    f(s,n);    return 0;}
0 0
原创粉丝点击