PAT:1017. A除以B (20) AC

#include<stdio.h>
#include<string.h>

char n[1010];    //暂存输入的大整数字符串
int num[1010];    //暂存可以运算的各位数字
int cnt=0;      //记录数字个数
int chu;      //除数
int main()
{
  scanf("%s %d",n,&chu);
  cnt=strlen(n);
  int yushu=0;            //本位不够除的时候,后位想此位借位
  for(int i=0 ; i<cnt ; ++i)      //每一位变成数字
    num[i]=n[i]-'0';
  bool first=0;            //【caution】记录第一个数字有没有输出,若第一个数字没有输出而要输出的是0,则不输出该0
  for(int i=0 ; i<cnt-1 ; ++i)    //处理前cnt-1位的数
  {
    int tmp=yushu*10+num[i];    //余数数放十位上,加上本位进行运算
    int out=tmp/chu;
    yushu=tmp%chu;
    if(out==0 && first==0)      //首位不输出0
      continue;
    printf("%d",out);
    first=1;            //首位已有非0输出,之后的0可以输出
  }
  //处理最后一位
  int tmp=yushu*10+num[cnt-1];
  printf("%d %d\n",tmp/chu,tmp%chu);
  return 0;
}
posted on 2015-03-06 17:06  Evence  阅读(152)  评论(0编辑  收藏  举报