列表

详情


NC214441. 中学数学题

描述

这是一道很简单的中学数学题:

给定数n,求n!的p进制下有多少个后导零。非常简单。
为了简化问题,p保证为素数。

输入描述

第一行给定一个数t,表示有t组输入

接下来t行,每行给定两个数n,p;意义如题所示;
输入范围:(t<=1000) (1<=n<=1000000 ) (2<=p<=1000000)

输出描述

对于每一组输入,输出单独的一行表示答案。

示例1

输入:

2
2 2
3 2

输出:

1
1

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(clang++11) 解法, 执行用时: 3ms, 内存消耗: 376K, 提交时间: 2020-12-06 14:27:40

#include<stdio.h>
int main()
{int t,i,n,p,s=0;
scanf("%d",&t);
for(i=1;i<=t;i++)
{s=0;
scanf("%d %d",&n,&p);
 while(n!=0)
 {n=n/p;
 s+=n;
 }
printf("%d\n",s);}
return 0;}

pypy3(pypy3.6.1) 解法, 执行用时: 155ms, 内存消耗: 22900K, 提交时间: 2020-12-07 12:37:20

t=input()
t=int(t)
while t:
    t-=1
    n,p=input().split()
    n=int(n)
    p=int(p)
    res=0
    while n:
        res+=n//p
        n//=p
    print(res)
        

C(clang11) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2020-12-07 19:47:51

main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
	int p,n,ans=0;
	scanf("%d %d",&n,&p);
	while(n>=p)
	{
	ans+=n/p;
	n=n/p;
	}
	printf("%d\n",ans);
	}








}

Python3(3.9) 解法, 执行用时: 21ms, 内存消耗: 2812K, 提交时间: 2020-12-06 16:26:09

t=int(input())
for i in range(t):
    n,p=map(int,input().split())
    k=0
    while n>0:
        n=n//p
        k+=n
    print(k)

上一题