看似计算的一道字符串题目,整体思路就是模拟除法,注意处理商为0的情况哦~用字符数组储存结果一定注意末尾补'\0'虽然很多时候他都会自动补,但如果那段内存之前恰好不是'\0'的话会造成错误并且很难debug出来(血的教训T^T)
AC代码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char num[1010];
int B;
scanf("%s %d", num, &B);
int divd = 0;
char relt[1010];
int mod = 0;
int i;
for(i = 0; i < strlen(num); i++){
divd = divd * 10 + (num[i] - '1' + 1);
relt[i] = (divd / B) - 1 + '1';
divd %= B;
if(i == strlen(num) - 1){
mod = divd;
}
}
relt[i] = '\0';
int j = 0;
while(relt[j] == '0'){
for(int i = j; i < strlen(relt); i++){
relt[i] = relt[i + 1];
}
j++;
}
if(relt[0] == '\0'){
relt[0] = '0';
relt[1] = '\0';
}
printf("%s %d", relt, mod);
return 0;
}