返回目录
题目描述
有位客人来自异国,在该国使用 m 进制计数。
该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。
问:当其购买一个在我国价值 k 的产品时,其中包含多少幸运数字?
输入描述
第一行输入为 k,n,m。
其中:
- k 表示该客人购买的物品价值(以十进制计算的价格)
- n 表示该客人的幸运数字
- m 表示该客人所在国度采用的进制
输出描述
输出幸运数字的个数,行末无空格
备注
当输入非法内容时,输出0
示例:
输入 | 10 2 4 |
---|---|
输出 | 2 |
说明 | 10用4进制表示时为22,同时,异国客人的幸运数字是2,故而 此处输出为2,表示有2个幸运数字。 |
题目解析
这道题有点歧义。
比如异国的进制 m = 16,而异国客人的幸运数 n = 5,
那么如果十进制数 k 转成 m 进制后,如下:
15 | 15 | 15 | 15 | 15 |
---|
那么本次支付的花费(折算为异国的价格后)中存在多少幸运数字呢?
- 如果异国客人是按照 m进制的 “位值” 来对比幸运数 n 的话,那么上面情况存在 0 个幸运数数,因为 15 != 5。
- 如果异国客人是从 “m进制字符串” 中找幸运数n的话,那么存在5个幸运数,即在字符串"1515151515"中找幸运数5的出现次数。
本题题目描述和给的用例都无法解释上面问题。因此,这里我给出两种实现。
Python算法源码
def get_result(k, n, m):
# 如果幸运数 >= 进制基数,比如 m=2 进制,要找 n >= 2 的幸运数,那么肯定是没有的
if n >= m:
return 0
count = 0
# 除留取余
while k > 0:
remain = k % m # 余数就是 m 进制的每一位上“位值”
# 按照 m 进制的“位值”来对比幸运数 n
if remain == n:
count += 1
k //= m
return count
# 输入处理
if __name__ == "__main__":
k, n, m = map(int, input().split())
print(get_result(k, n, m))
C算法源码
#include <stdio.h>
// 计算幸运数的个数
int get_result(long k, long n, long m) {
// 如果幸运数 >= 进制基数,比如 m=2 进制,要找 n >= 2 的幸运数,那么肯定是没有的
if (n >= m) {
return 0;
}
int count = 0;
// 除留取余
while (k > 0) {
long remain = k % m; // 余数就是 m 进制的每一位上“位值”
// 按照 m 进制的“位值”来对比幸运数 n
if (remain == n) {
count++;
}
k = (k - remain) / m;
}
return count;
}
int main() {
long k, n, m;
scanf("%ld %ld %ld", &k, &n, &m);
printf("%d\n", get_result(k, n, m));
return 0;
}
Java算法源码
import java.util.Scanner;
public class Main {
// 计算幸运数的个数
public static int getResult(long k, long n, long m) {
// 如果幸运数 >= 进制基数,比如 m=2 进制,要找 n >= 2 的幸运数,那么肯定是没有的
if (n >= m) {
return 0;
}
int count = 0;
// 除留取余
while (k > 0) {
long remain = k % m; // 余数就是 m 进制的每一位上“位值”
// 按照 m 进制的“位值”来对比幸运数 n
if (remain == n) {
count++;
}
k = (k - remain) / m;
}
return count;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long k = sc.nextLong();
long n = sc.nextLong();
long m = sc.nextLong();
System.out.println(getResult(k, n, m));
}
}
3 条评论
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]