目录

题目

思路

Code


题目

有位客人来自异国,在该国使用m进制计数。该客人有个幸运数字n(n<m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。问: 当其购买一个在我国价值的产品时,其中包含多少幸运数字?

输入描述
第一行输入为 k,n,m。
其中
1:k 表示 该客人购买的物品价值 (以十进制计算的价格)
2:n 表示 该客人的幸运数字
3:m 表示 该客人所在国度的采用的进制
输出描述
输出幸运数字的个数,行末无空格。当输入非法内容时,输出0

示例1:
输入:

10 2 4
输出:

2
说明:
10用4进制表示时为22,同时,异国客人的幸运数字是2,故而此处输出为2,表示有2个幸运数字

示例2:
输入:

10 4 4
输出:

0
说明:
此时客人的幸运数字为4,但是由于该国最大为4进制,故而在该国的进制下不可能出现幸运数字,故而返回0

思路

1:简单的进制转换题目。

2:第一步将十进制数字转为对应的m进制数字。

3:第二步将此数字视为字符串,统计其中n出现的次数即可。但是此步骤我们可以直接统计每次进制数字计算的余数出现n的次数。 十进制与其他进制之间怎样转化-百度经验

4:注意细节的处理,题目要求需要处理非法输入。

编辑

Code

# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
import functools
import sys
from collections import Counter, defaultdict
import copy
from itertools import permutations
import re
import math
import sys
from queue import Queue
 
k=0
n=0
m=0
flag = False
try:
    params = [int(x) for x in input().split(" ")]
    k= params[0]
    n = params[1]
    m = params[2]
    if(k <= 0 or n <= 0 or m <= 1 or n >= m):
        print(0)
        flag = True
except :
    print(0)
    flag = True

if(not flag) :
    result = 0
    while(True):
        if(k<=0) :
            print(result)
            break
        else :
            if (k % m == n) :
                result+=1
                k //= m
            else:
                k //= m
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.