题目链接
由于后面B在int范围内,那么我们就可以通过与大数乘法/加法类似的方法,将A存入一个较大的数组中,然后用每一位与B相除
要注意商为0的情况!!!
代码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
long long i,B,flag,d,k,x,num[1000];//保守起见,将他们都定义为longlong型
char A[1000],ch[3];
while(scanf("%s %s %lld",&A,&ch,&B) != EOF)
{
flag = -1; //当flag = 0时为/号 ; 当flag = 1时为%号
if(strcmp(ch,"/") == 0)
flag = 0;
else
flag = 1;
x = 0;d = 0;
for(i = 0; A[i] ;i++)
{
x = x*10 + A[i] - '0';
num[d++] = x / B;
x = x % B;
}
if(!flag)
{
k = 0;
for(i = 0;i < d;i++)
{
if(num[i])
k = 1;
if(k)
printf("%lld",num[i]);
}
if(k == 0)
printf("0");
printf("\n");
}
else
printf("%lld\n",x);
}
return 0;
}