NC214441. 中学数学题
描述
这是一道很简单的中学数学题:
输入描述
第一行给定一个数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)