A non-negative integer is called heavy if the average value of its digits in decimal representation exceeds 7. Assume that 0 has an average value of its digits equal to 0.
For example, the number 8,698 is heavy because the average value of its digits is (8+6+9+8)/4 = 7.75. The number 53,141 has an average value of its digits of (5+3+1+4+1)/5 = 2.8, so it is not heavy.
Write a function:
class Solution { public int heavy_decimal_count(int A,int B); }
that, given two non-negative integers A and B, returns the number of heavy integers within the interval [A..B] (both ends included).
Assume that:
- A is an integer within the range [0..200,000,000];
- B is an integer within the range [0..200,000,000];
- A ≤ B.
For example, given A=8,675 and B=8,689 the function should return 5, because there are five heavy integers within the range [8,675..8,689]:
8675 avg=6.50
8676 avg=6.75
8677 avg=7.00
8678 avg=7.25 HEAVY
8679 avg=7.50 HEAVY
8680 avg=5.50
8681 avg=5.75
8682 avg=6.00
8683 avg=6.25
8684 avg=6.50
8685 avg=6.75
8686 avg=7.00
8687 avg=7.25 HEAVY
8688 avg=7.50 HEAVY
8689 avg=7.75 HEAVY
Complexity:
- expected worst-case time complexity is O((log(A)+log(B))3);
- expected worst-case space complexity is O(log(A)+log(B)).
这个不确定,高手可以指教。
方案一:
public int heavy_decimal_count(int A,int B) {
int result = 0;
int n = B - A;
for(int i = 0; i <= n; i++) {
int t = A + i;
if(t == 0) {
continue;
}
int w = 0;
double sum = 0;
while(t > 0) {
sum += (t % 10);
t = t / 10;
w++;
};
if((sum / w) > 7) {
result++;
}
}
return result;
}
方案二:
public int heavy_decimal_count(int A,int B) {
int result = 0;
int x = A;
double sum = 0;
Vector<Integer> v = new Vector<Integer>(9);
if(x == 0) {
v.add(0);
} else {
while(x > 0) {
int ys = (x % 10);
v.add(ys);
sum += ys;
x = x / 10;
};
if(sum / v.size() > 7) {
result++;
}
}
int n = B - A;
for(int i = 1; i <= n; i++) {
int jw = 0;
for(int j = 0; j < v.size(); j++) {
if(v.get(j) + 1 == 10) {
v.set(j, 0);
jw++;
if(jw < v.size()) {
continue;
} else {
v.add(1);
}
} else {
v.set(j, v.get(j) + 1);
}
break;
}
sum = sum - (9 * jw) + 1;//这个是关键,不需要每次循环求和,而是根据上一个数的结果得到下一个数的结果,其中jw表示相当上一个数,当前数做了几次进位操作
if(sum / v.size() > 7) {
result++;
}
}
return result;
}
分享到:
相关推荐
三维RRT( Rapidly-exploring Random Trees,快速探索随机树)...对于给定的压缩包文件“3维避障RRT算法”,很可能包含了实现这一算法的代码示例、仿真结果或者其他相关资料,可以帮助我们更深入地理解和应用这个算法。
一个IK的CCD算法在3D空间中的实现,非常好用
1.1. 一次计算最小二乘算法 3 1.2. 递推最小二乘算法 3 2. 遗忘因子最小二乘算法 6 2.1. 一次计算法 6 2.2. 递推算法 6 3. 限定记忆最小二乘递推算法 9 4. 偏差补偿最小二乘法 11 5. 增广最小二乘法 13 6. 广义最小...
3. **概率算法**:这类算法在决策过程中引入随机性,通过概率模型和统计分析来解决问题。例如,蒙特卡洛方法就是一种常见的概率算法,用于解决数学和物理问题,如计算圆周率或求解最短路径问题。 4. **模拟退火算法...
3 单源最短路径 3.1 Bellman-Ford算法 3.2 有向无环图(DAG图)中单源最短路径问题 3.3 Dijkstra算法 3.4 差分约束和最短路径 3.5 最短路径的性质证明(三上无路收钱) 4 所有结点对的最短路径问题 4.1 矩阵乘法 ...
3、用几种算法跑测试函数进行对比 4、十分详细的 5、NGO算法主要与ssa、woa、pso、gwo等算法对比 matlab,如果有需要得伙伴可以向我咨询哦 ,NGO算法; 对比算法; 测试函数; 详细分析; MATLAB; 2022年新算法; ssa、woa...
3. 循环首次适应算法(Circular First Fit) 循环首次适应算法是首次适应算法的一种改进版本。在分配内存时,它不是简单地从头开始查找,而是从上次分配内存的位置开始,当找到合适的空闲分区后,记录下这次分配的...
本文将对Matlab智能优化算法进行概述,涵盖粒子群算法、模拟退火算法、差分进化算法和蚁群算法等四种常见的智能优化算法,并提供相应的Matlab源代码。 一、差分进化算法(DE) 差分进化算法是一种基于群体智能的...
3DES 算法计算 MAC 3DES 算法是一种基于对称加密的算法,使用双倍长密钥来计算工作密钥、PIN 密钥和 MAC 值。下面是关于 3DES 算法计算 MAC 的知识点: 1. 什么是 3DES 算法? 3DES 算法是基于 DES 算法的一种...
仿真空时自适应处理STAP里的算法合集程序:Capon谱、降维算法3dt、JDL等
【算法】Graham 凸包扫描算法 ( 凸包概念 | 常用的凸包算法 | 角排序 | 叉积 | ...3、Graham 凸包扫描算法 二、Graham 算法前置知识点 1、角排序 2、叉积 3、算法过程分析 三、代码示例 1、完整代码示例 2、执行结果
在国密算法中,SM1、SM2、SM3、SM4、SM7和SM9都是对称加密算法。 - SM1算法的具体细节并未公开,它是中国国家商用的对称密钥算法,为政府和军事等部门所使用。 - SM2算法是基于椭圆曲线加密技术的算法,包括SM2加密...
模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+代码实现)模型算法大全(20+种常用算法模型+...
SM3算法原理,朋友亲自整理的,供大家交流学习。
本文将深入探讨四种主要的智能优化算法:遗传算法、模拟退火算法、禁忌搜索和蚁群算法,以及这些算法的原理、应用场景和发展趋势。 **一、遗传算法** 遗传算法是受生物进化理论启发的一种全局优化方法,它通过模拟...
通过C语言实现国密SM3算法,可实现对内容的摘要计算
算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP算法 KMP
3. 贪心算法:贪心算法是解决问题的近似方法,通过选择当前最优的解决方案,逐步解决问题。小灰学会了贪心算法的原理和应用,掌握了贪心算法的思想和实现方法。 4. 分治算法:分治算法是解决问题的递归方法,通过将...
常见的磁盘调度算法有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)和循环扫描算法(CSCAN)等。 先来先服务算法(FCFS) 先来先服务算法(FCFS)是一种最简单的磁盘调度算法。该算法...
K2算法是其中一种用于学习贝叶斯网络结构的算法,尤其适用于小到中等规模的数据集。 K2算法,全称为Cowell-Koller-Komorowski算法,由R. Cowell、M. Koller、A. Komorowski于1994年提出。该算法基于最大后验概率...