首页 > 试题广场 >

整除问题

[编程题]整除问题
  • 热度指数:13810 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。

输入描述:
两个整数n(2<=n<=1000),a(2<=a<=1000)


输出描述:
一个整数.
示例1

输入

6 10

输出

1
while True:
    try:
        n,a=map(int,input().strip().split(' '))
        def jischeng(n):
            result=1
            while n>1:
                result=result*n
                n-=1
            return result
        n_jie=jischeng(n)
        def data_k(a,n_jie):
            k=0
            while n_jie%(a**k)==0:
                k+=1
            return k-1
        print(data_k(a,n_jie))
    except:
        break
发表于 2019-08-14 09:13:52 回复(0)
while True:
    try:
        n,a = list(map(int,input().split()))
        k = 0
        fac = 1
        while n != 1:
            fac *= n
            n-=1
        while fac % a == 0:       #能整除a^k就能整除a(a^k的因子)
            k += 1
            fac //= a
        print(k)
    except Exception:
        break

编辑于 2018-10-13 22:50:48 回复(0)

python 解法:

from math import factorial as f

n, a = map(int, input().split())
for i in range(1, n):
    if f(n) % (a ** i) == 0 and f(n) % (a ** (i + 1)) != 0:
        print(i)
        break
发表于 2017-10-16 17:47:23 回复(0)
from math import factorial as f
n, a = map(int, raw_input().split())
s = f(n)           
k = 0
while s % a == 0:
    k += 1
    s //= a
print k

发表于 2017-02-15 20:20:35 回复(0)