【发布时间】:2016-12-01 11:16:51
【问题描述】:
我的解决方案非常快,但还不够。我需要更快。我怎样才能减少我的时间? 输入数:n (0 ≤ n ≤ 1000000) 基数应该是:基数 (2 ≤ base ≤ 1000)
- 输入 5!在 10 基地。输出为:3
- 输入 22!在 3 基地。输出为:45
时间限制:2 秒,内存限制:32 MB
这是我的c语言代码:
#include<stdio.h>
#include<math.h>
int factorialDigitExtended ( int n, int base ) {
double x = 0;
for ( int i = 1; i <= n; i++ ) {
x += log10 ( i ) / log10(base);
}
int res = ( (int) x ) + 1;
return res;
}
int main(){
int i, t, n, b;
for(i=1; i<= t; i++){
scanf("%d %d", &n, &b);
printf("Case %d: %d\n", i, factorialDigitExtended(n, b));
}
return 0;
}
【问题讨论】:
-
您如何衡量执行时间?执行时间很大程度上取决于您使用的机器,您是否有特定的设置?
-
请定义“更快”
-
这是一个代码审查问题,你必须在这里问它codereview.stackexchange.com
-
时间限制:2 秒,内存限制:32 MB
-
时间限制是多少?