十进制转 n! 进制(python实现)

xiaoxiao2021-02-28  89

n! 进制

Time limit per test: 1.0 seconds

Memory limit: 256 megabytes

n! 进制是指从数的最低位开始,第 i 位的权值是 (i+1)! ,第 i 位取值范围为 0 ~ i+1 i 0 开始。

例如: n! 进制的 21 对应10进制的 5 , 计算方法为: 2×2!+1×1!=5 n! 进制的 120 对应10进制的 10 1×3!+2×2!+0×1!=10

给你一个10进制数,求其 n! 进制的值。

Input

第 1 行为一个整数 T (1T10) ,表示问题数。

接下来 T 行,每行一个10进制的整数 n 0n3628799 (10!1)

Output

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等),然后在一行中输出十进制数的对应的 n! 进制数的值。

Examples

Input 5 0 1 10 100 3628799 Output case #0: 0 case #1: 1 case #2: 120 case #3: 4020 case #4: 987654321

Note

n! 表示 n 的阶乘。

Source

2017 编程实训第二次机考  python3代码实现: import math import itertools def main(): n,c=get_data() num=[] for i in range(n): num.append(cal(c[i])) for k in range(n): print('case '+'#'+str(k)+':') print(num[k]) #获取数据 def get_data(): n= eval(input()) c=[] for i in range(n): str_in = input() b = [int(n) for n in str_in.split()] c.extend(b) return n,c #将十进制转化成N!进制 def cal(c): b=list(str(c))#为了方便该数的长度 n=len(b) a=int(c) e=[] for i in range(n+5)[::-1]: f =int(a / math.factorial(i + 1))#将数除以(i+1)的阶乘以得到转化后对应的第i位数值 e.append(str(f)) a=int(a%math.factorial(i + 1)) s = int("".join(itertools.chain(*e)))#将列表中所有字符合并成一个字符串并把其转化成int型 return s main()
转载请注明原文地址: https://www.6miu.com/read-37243.html

最新回复(0)