原题链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=803
题目描述:
做了A+B Problem,A/B Problem不是什么问题了吧!
在该过程中遇到的问题:
在计算差值的过程中遇到了问题,没有考虑到比如:0200 / 2的情形,输出为1
错误算法:for(i=0;i<n;i++){
if(b[i]<a[i]){
res[i]=10+b[i]-a[i];
b[i+1]--;
}
else res[i]=b[i]-a[i];
}
代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int b,res[10001];
char m[10001],fuhao;
int jisuan(){
int i,j=0,sum=0,yushu=0;
for(i=0;i<strlen(m);i++){
yushu=yushu*10+m[i]-48;
res[i]=yushu/b;
yushu=yushu%b;
}
return yushu;
}
int main(){
int i,flag,j;
while(~scanf("%s %c %d",m,&fuhao,&b)){
flag=0;
memset(res,0,sizeof(res));
int yuyu=jisuan();
if(fuhao=='%')
printf("%d",yuyu);
else if(fuhao=='/'){
for(i=0;i<strlen(m);i++){
if(res[i]){
flag=1;
for(j=i;j<strlen(m);j++)
printf("%d",res[j]);
break;
}
}
if(flag==0)
printf("0");
}
printf("\n");
}
return 0;
}