抽测了一些数据,还是没找到有什么不同。看来还是得好好分析一下你的程序才行,这两天总说要看,但总是没看,不能辜负你赠代码的情意,明天忙完工作上的事一定好好分析分析。
你要有兴趣也可以看看我的代码问题出在哪儿。下面是扩展倍数后的测试用代码。
程序代码:
你要有兴趣也可以看看我的代码问题出在哪儿。下面是扩展倍数后的测试用代码。
程序代码:#include<stdio.h>
#define FB 100000000000000000LL
int output(long long n, int p, int k)
{
long long a, c0, c1, t;
for(c1 = c0 = 0, a = 1; t = n / a / p; a *= p)
{
c0 += (t - !k) * a;
c1 += c0 / FB;
c0 %= FB;
t = n % (a * p) - a * k + 1;
c0 += t <= 0 ? 0 : t < a ? t : a;
c1 += c0 / FB;
c0 %= FB;
}
t = (k ? n - a * k : 0) + 1;
c0 += t <= 0 ? 0 : t < a ? t : a;
c1 += c0 / FB;
c0 %= FB;
return c1 ? printf("%lld%017lld\n", c1, c0) : printf("%lld\n", c0);
}
int main()
{
long long n;
int p, k;
char s[4];
for(; scanf("%lld%d%s", &n, &p, s) != EOF; output(n, p, k))
k = s[0] >= 'a' ? s[0] - 'a' + 36 : s[0] >= 'A' ? s[0] - 'A' + 10 : s[0] - '0';
return 0;
}

重剑无锋,大巧不工









