那些彩票广告网站怎么做的,手机网站定制建设,广元网络推广,免费建立小程序网站华为OD机试 2024D卷题库疯狂收录中#xff0c;刷题点这里 专栏导读
本专栏收录于《华为OD机试#xff08;JAVA#xff09;真题#xff08;D卷C卷A卷B卷#xff09;》。
刷的越多#xff0c;抽中的概率越大#xff0c;每一题都有详细的答题思路、详细的代码注释、样例测… 华为OD机试 2024D卷题库疯狂收录中刷题点这里 专栏导读
本专栏收录于《华为OD机试JAVA真题D卷C卷A卷B卷》。
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。
一、题目描述
有位客人来自异国在该国使用m进制计数。
该客人有个幸运数字n(nm)每次购物时其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。
问: 当其购买一个在我国价值k的产品时其中包含多少幸运数字?
二、输入描述
第一行输入为 k,n,m。其中:
k 表示 该客人购买的物品价值 (以十进制计算的价格)
n 表示该客人的幸运数字
m 表示 该客人所在国度的采用的进制
三、输出描述
输出幸运数字的个数行未无空格。
1、输入
10 2 4
2、输出
2
3、说明
10用4进制表示时为22同时异国客人的幸运数字是2故而此处输出为2表示有2个幸运数字。
四、解题思路
我们需要将十进制数 k 转换为 m 进制然后统计其中等于幸运数字 n 的个数。具体步骤如下
将十进制数 k 转换为 m 进制 使用除基取余法直到 k 为0将每次的余数记录下来。将记录的余数反向排列即为 m 进制表示。 统计幸运数字的个数 遍历 m 进制表示的数字统计其中等于 n 的数字个数。 输出结果输出幸运数字的个数。
五、Java算法源码
public class Test01 {public static void main(String[] args) {Scanner scanner new Scanner(System.in);// 读取输入的 k, n, mint k scanner.nextInt();int n scanner.nextInt();int m scanner.nextInt();// 关闭Scannerscanner.close();// 将十进制数 k 转换为 m 进制String mBaseNumber convertToBaseM(k, m);// 统计幸运数字 n 的个数int luckyNumberCount countLuckyNumbers(mBaseNumber, n);// 输出结果System.out.println(luckyNumberCount);}// 将十进制数 k 转换为 m 进制表示private static String convertToBaseM(int k, int m) {StringBuilder mBaseNumber new StringBuilder();while (k 0) {int remainder k % m;mBaseNumber.append(remainder);k / m;}return mBaseNumber.reverse().toString();}// 统计 m 进制表示中幸运数字 n 的个数private static int countLuckyNumbers(String mBaseNumber, int n) {int count 0;char luckyDigit Character.forDigit(n, 10);for (char digit : mBaseNumber.toCharArray()) {if (digit luckyDigit) {count;}}return count;}
}六、效果展示
1、输入
10 4 4
2、输出
0
3、说明
此时客人的幸运数字为4但是由于该国最大为4进制故而在该国的进制下不可能出现幸运数字故而返回0 下一篇华为OD机试 - 简易内存池 - 逻辑分析Java 2024 C卷 200分
本文收录于华为OD机试JAVA真题D卷C卷A卷B卷
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。