抽测了一些数据,还是没找到有什么不同。看来还是得好好分析一下你的程序才行,这两天总说要看,但总是没看,不能辜负你赠代码的情意,明天忙完工作上的事一定好好分析分析。
你要有兴趣也可以看看我的代码问题出在哪儿。下面是扩展倍数后的测试用代码。
你要有兴趣也可以看看我的代码问题出在哪儿。下面是扩展倍数后的测试用代码。
程序代码:
#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; }
重剑无锋,大巧不工