九度OJ 1104 整除问题
来源:互联网 发布:隔音窗帘 知乎 编辑:程序博客网 时间:2024/05/16 23:35
题目地址:http://ac.jobdu.com/problem.php?pid=1104
- 题目描述:
给定n,a求最大的k,使n!可以被a^k整除但不能被a^(k+1)整除。
- 输入:
两个整数n(2<=n<=1000),a(2<=a<=1000)
- 输出:
一个整数.
- 样例输入:
6 10
- 样例输出:
1
- 来源:
- 2011年上海交通大学计算机研究生机试真题
#include <stdio.h>#include <string.h>#include <math.h> int IsPrime (int n){ if (n <= 1) return 0; int sq = (int)sqrt((double)n); while (sq >= 2){ if (n % sq == 0) break; --sq; } return (sq >= 2) ? 0 : 1; } void Initialize(int Prime[], int n, int * primeSize){ int index = 1; int num = 3; Prime[0] = 2; while (num < n){ if (IsPrime (num)){ Prime[index] = num; ++index; } num += 2; } *primeSize = index;} int main(void){ int n, a; int Prime[200]; int primeSize; int cnt1[200], cnt2[200]; int tmp; int i; Initialize(Prime, 1000, &primeSize); while (scanf ("%d%d", &n, &a) != EOF){ memset (cnt1, 0, sizeof(cnt1)); memset (cnt2, 0, sizeof(cnt2)); for (i=0; i<primeSize; ++i){ tmp = n; while (tmp){ cnt1[i] += tmp / Prime[i]; tmp /= Prime[i]; } } int ans = 10000000; for (i=0; i<primeSize; ++i){ while (a % Prime[i] == 0){ ++cnt2[i]; a /= Prime[i]; } if (cnt2[i] == 0) continue; if (cnt1[i] / cnt2[i] < ans) ans = cnt1[i] / cnt2[i]; } printf ("%d\n", ans); } return 0;}
参考资料:2013年王道论坛计算机考研机试指南
0 1
- 九度OJ 1104 整除问题
- 九度OJ 1104 整除问题
- 九度oj 题目1104:整除问题
- 九度OJ 1104 整除问题
- 九度 oj 题目1104:整除问题
- 九度OJ-1104:整除问题
- 九度OJ-1104-整除问题
- 九度OJ 1104:整除问题 (整除、因式分解)
- 九度1104:整除问题
- 九度 1104:整除问题
- 九度-1104-整除问题
- 九度[1104]-整除问题
- 【学习笔记】〖九度OJ〗题目1104:整除问题
- 九度题目1104整除问题
- 【九度】题目1104:整除问题
- oj整除和商的问题1104
- 九度OJ 1214:丑数 (整除)
- 九度OJ 区间问题
- JAVA进行打印
- Hadoop学习之HDFS架构(二)
- linux如何列出组中所有的用户
- Python-ceilometerclient 代码分析
- DataGridView单元格只输入小数或整数
- 九度OJ 1104 整除问题
- 找球号(一) bitset的使用 STL
- Dojo 键盘事件<11>
- 如何在uboot/LK中读取raw分区
- android 中post上传数据返回值是乱码问题的解决
- 国内四分之三团购网站已倒闭
- C#实现工厂模式简介--实现访问不同的数据库
- Android(安卓)系统USB-OTG-HID外设通讯开发
- SQL Server 2005学习笔记⑦- 分页(按分组进行分页)