整除问题

题目1104:整除问题

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:1505

解决:440

题目描述:

给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。

输入:

两个整数n(2<=n<=1000),a(2<=a<=1000)

输出:

一个整数.

样例输入:
6 10
样例输出:
1
 
     
 
     
#include<cstdio>

using namespace std;

 

int gcd(int a,int b)//a较大,b较小 

{

    if(a<b){ a=a+b; b=a-b; a=a-b; }

    if(a%b==0) return b;

    return gcd(b,a%b);

}

int main()

{

    int n,a,k,i,t;

    while(scanf("%d%d",&n,&a)!=EOF)

    {

         for( k=0,i=2,t=1; i<=n; ++i )

         {

              t*=i;

              while(t%a==0)

              {

                   t/=a;

                   ++k;

              }

              t=gcd(t,a);

         }

         printf("%d\n",k);

    } 

    return 0;

}

/**************************************************************

    Problem: 1104

    User: 3011216016

    Language: C++

    Result: Accepted

    Time:10 ms

    Memory:1020 kb

****************************************************************/



你可能感兴趣的:(问题)