如题,最后一个测试点超时了
1-9#测试点都是AC,而且如果不考虑限时问题,那么#10的输出也应该是对的
换句话说就是代码效率太低,速度太慢
使用的是纯C,求大佬给一些优化建议qaq
代码如下,含注释
#include <stdio.h>
#include <math.h>
int include(int x, int a);
//定义了一个函数,作用是计算数字x中数码a出现了几次,返回值就是出现次数
int main(){
int m, n;
int count[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};//这个数组存储0到9每个数码的总出现次数,目前还全都是0
scanf("%d %d", &m, &n);
for(int i = m; i <= n; i ++){
for(int j = 0; j <= 9; j ++){
count[j] += include(i, j);
}
}//从m到n暴力挨个统计每个数码的出现次数,我估计这里有优化空间
for(int i = 0; i <= 9; i ++){
printf("%d ", count[i]);
}//打印结果
return 0;
}
//出现次数函数的代码如下,我估计这里是优化重点
int include(int x, int a){
int digit = 0, r; //digit指代数位,个位数,十位数...
int count = 0;
for(; x >= pow(10, digit); digit ++){
}//计算输入的x的位数
for(int i = 1; i <= digit; i ++){
r = x % 10;
if(r == a){
count ++;
}
x -= r;
x /= 10;
}//这个循环可以把输入的数字分解成每一位的数码
return count;
}