支持论坛举办此类活动,重在参与!
主要的算法代码如下,算出结果的时间不超过1毫秒。
代码:
// //函数功能:统计整数n中数字k的出现频率 // //参数1:n - 被统计的整数 //参数2:k - 要统计的数字 //返回值:该数字的出现频率 // int countx(int n, int k) { int count = 0; int factor = 1; int lower = 0; int curr = 0; int higher = 0; while (n/factor != 0) { lower = n - (n/factor) * factor; curr = (n/factor) % 10; higher = n / (factor*10); if (curr < k ) { // 如果当前位数字小于k,则:k的出现次数=高位数字×当前因子 count += higher * factor; } else if (curr == k) { // 如果当前位数字等于k,则:k的出现次数=高位数字×当前因子+低位数字+1 count += higher * factor + lower + 1; } else if (curr > k) { // 如果当前位数字大于k,则:k的出现次数=(高位数字+1)×当前因子 count += (higher + 1) * factor; } factor *= 10; } return count; }