首页 > ACM题库 > 九度OJ > 九度-1104-整除问题[解题代码]
2013
12-12

九度-1104-整除问题[解题代码]

题目来源:2011年上海交通大学计算机研究生机试真题

题目描述:

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

输入:

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

输出:

一个整数.

样例输入:
6 10
样例输出:
1

cpp 代码如下:
#include <stdio.h>
int main() {
	int n, a;
	while (~scanf("%d %d", &n, &a)) {
		int cnt = 0;
		int sum = 1;
		int i;
		for (i = n; i >= 1; i--) {
			sum *= i;
			while (sum % a == 0) {cnt++;sum /= a;}
			sum %= a;
		}
		printf("%d\n", cnt);
	}
	return 0;
}
/**************************************************************
	Problem: 1104
	User: coder
	Language: C
	Result: Accepted
	Time:0 ms
	Memory:912 kb
****************************************************************/


  1. Thanks for taking the time to examine this, I really feel strongly about it and love studying a lot more on this topic. If possible, as you acquire experience

  2. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。

  3. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。