您的位置:首页 > 汽车 > 新车 > 举报一品威客网骗局_网页设计教程课本课后题答案_网站设计需要什么_网站seo优化公司

举报一品威客网骗局_网页设计教程课本课后题答案_网站设计需要什么_网站seo优化公司

2024/12/28 9:52:29 来源:https://blog.csdn.net/qq_38280242/article/details/144588718  浏览:    关键词:举报一品威客网骗局_网页设计教程课本课后题答案_网站设计需要什么_网站seo优化公司
举报一品威客网骗局_网页设计教程课本课后题答案_网站设计需要什么_网站seo优化公司

华为OD --- 靠谱的车

  • 题目
    • OJ用例
    • 独立实现
      • 思路
      • 源码
    • 参考实现
      • 思路
      • 源码实现

题目

在这里插入图片描述

OJ用例

测试用例case

独立实现

思路

独立实现的思路比较简单,直接建一个长度为N的数组,然后找出index中不包含4的项数即可

源码

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void (async function () {// 输入实际付费的钱const payCount = Number(await readline());// const payCountList = new Array(payCount).fill(1)let numberIn4 = 0for (let i = 1; i <= payCount; i++) {if(`${i}`.includes(4)){numberIn4 ++}}console.log(payCount - numberIn4)
})();

tips 未通过全部用例 部分用例超时

参考实现

思路

其实看题目有想过是进制的解法,但是之前了解的进制都是满n进1,但是没有碰到这种满n+1的算法
算法思路如下
看位数是否大于进制数,如果大于 则当前位-1乘以进度的当前位次方,如果不大于则直接用当前位乘以进度的当前位次方
可能比较抽象,这里举两个🌰
这题的进制数是4 进度是9
以100为🌰
1 < 4 用1 * 9^2 = 81
0 < 4 用0 * 9^1 = 0
0 < 4 用0 * 9^0 = 0
最终得出81

再以501为🌰
5 > 4? (5 - 1) * 9 ^2 = 324
0 > 4? 0 * 9 ^1
1 > 4? 1 * 9 ^0 = 1

最终得 325

源码实现

 const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;void (async function () {// 输入实际付费的钱const payCount = await readline();let result = 0for (let i = 0 ; i < payCount.length; i++) {result += payCount[i] > 4 ? (payCount[i] - 1) * Math.pow(9, payCount.length - i - 1) : payCount[i]  * Math.pow(9, payCount.length - i - 1)}console.log(result)
})();

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com