B (C 언어)로 나눈 PAT B 1,017 A, 테스트 포인트 012가 통과하지

B로 나눈 1,017 A (20 분)

이 문제는 1000은 양의 정수 비트 이상이고 A / B의 계산을 필요로 B는 양의 정수이다. 사용자는 A = B × Q + R이 성립되도록 출력 Q 몫과 나머지 R, 필요가있다.

입력 포맷은 :
입력 시퀀스는 A 행에 주어지고 B는 중간 공간에 의해 분리된다.

출력 형식 :
순차 행 Q 및 R 출력 중간 공간에 의해 분리된다.

샘플 입력 :

123,456,789,050,987,654,321 (7)

샘플 출력 :

17,636,684,150,141,093,474 3

제목 세 가지 구덩이
구덩이 1 : 1000도 오래 오래 오래 부호없는 양의 정수와는 문자열로 해결 될 수있다, 충분하지 않습니다
피트 2 : 첫 번째 이상 사업이 0 (테스트 포인트 0, 2) 일 때, 별도의 출력 (출력으로하지 우선도 0)
피트 3 비즈니스이고 (테스트 1 점), 정상 출력 (0 출력) 0 일 때

#include <stdio.h>
int main()
{
    char a[1001],c[1001];
    int b,n=1,yu=0;
    scanf("%s %d",&a,&b);
    c[0]=(a[0]-'0')/b+'0';
    yu=(a[0]-'0')%b;
    while(a[n]!='\0')
    {
        c[n]=(a[n]-'0'+yu*10)/b+'0';
        yu=(a[n]-'0'+yu*10)%b;
        n++;
    }
	c[n]='\0';
    if(c[0]=='0' && c[1]!='\0')  //注意商为0或商首位为0的情况
        for(int i=1;i<n;i++)
            printf("%c",c[i]);
    else    
        printf("%s",c);
    printf(" %d",yu);
    return 0;
}

/*
本题三个坑
坑1:1000位的正整数即使使用unsigned long long 也不够长,只能用字符串解决
坑2:当商为多位并且第一位为0时(测试点0和2),分开输出(不能把首位的0也输出来了)
坑3:当商为一位且为0时(测试点1),正常输出(把0输出)即可
*/
게시 15 개 원래 기사 · 원의 칭찬 0 · 조회수 283

추천

출처blog.csdn.net/weixin_44562957/article/details/104115736