整除问题

题目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
****************************************************************/


posted on 2013-12-05 10:49  我的小人生  阅读(188)  评论(0编辑  收藏  举报