NYOJ 70

View Code
 1  
2 /*
3 思路:
4 比如:n=100,m=5
5 100是有20个5组成的
6 因此100减去一个5是95 ,减去两个是90
7 ...减去19个是0.
8 则是5 倍数的数有二十个(不是m的倍数的不能分解出m)
9 ,从这二十个
10 数中各分解出一个5则有20个5
11 这二十个数变为
12 20,19,18,...,1即 20的阶乘
13 相当于转移到求20的阶乘能分解多少个m了
14 依次类推!
15 */
16 #include<iostream>
17 using namespace std;
18 int main()
19 {
20 int t,n,m;
21 cin>>t;
22 while(t--)
23 {
24 int sum=0;
25 cin>>n>>m;
26 while(n>=m)
27 {
28 sum+=n/m;
29 n/=m;
30 }
31 cout<<sum<<endl;
32 }
33 // system("pause");
34 return 0;
35 }
36

 

你可能感兴趣的:(OJ)