题目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 ",k); } return 0; } /************************************************************** Problem: 1104 User: 3011216016 Language: C++ Result: Accepted Time:10 ms Memory:1020 kb ****************************************************************/