洛谷P1143进制转换 所有样例输出都和预期一模一样,自己也找了一些其他例子,输出结果也和预期一样,但测试点一个也过不去

洛谷P1143进制转换 所有样例输出都和预期一模一样,自己也找了一些其他例子,输出结果也和预期一样,但测试点一个也过不去
#include<stdio.h>
#include<string.h>
void t2e(int sum, int m)
{
    char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    int  ret = 0, b[100], i = 0;
    if (sum == 0) printf("0");
    while (sum)
    {
        ret = sum % m;
        b[i++] = ret;
        sum /= m;
    }
    for (i = i - 1; i >= 0; i--)
    {
        int s = b[i];
        printf("%c", hex[s]);
    }
}
int main()
{
    int n = 0, i = 0, t = 0, sum = 0, m = 0, ret = 0, b[100]; char a[100]; char hex[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    scanf("%d", &n);
    getchar();
    gets(a);
    scanf("%d", &m);
    if (a[0] == 0) printf("0");
    for (i = 0; i < strlen(a); i++)
    {
        if (a[i] >= '0' && a[i] <= '9') t = a[i] - '0';
        if (a[i] >= 'A' && a[i] <= 'Z') t = a[i] - 'A' + 10;
        sum = sum * n + t;
    }
    t2e(sum, m);
} 


那你要看题目的具体要求啊。有时候输出最后多一个换行符就全是错误答案