题目描述:

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

输入:

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

输出:

一个整数.

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

这道题貌似简单,但对n!,当n = 1000,其值远远超过int的范围,因此不能用简单的方法来求解。
考虑到整除的问题,可以将a拆分成几个质因子的乘积,记录每个质因子的个数,之后对于i从1到n,求解每一个i包含这些质因子的个数并求和。最后算和里总共包括多少个a的质因子个数,即可得出答案
代码如下
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#define MAX 1002
// 15 14 13 12 11 10 8 6 5 4 2 1
// 10 2 5
bool isPrime(int n) {
if(n <= ) {
return false;
}
else if(n == ) {
return false;
}
else {
int two = sqrt(n);
for(int i = ; i <= two; i++) {
if(n % i == ) {
return false;
}
}
return true;
} } int yin[MAX];
int prime[MAX];
int yinCount[MAX];
int yinNum[MAX]; int main(int argc, char const *argv[])
{
int n, a;
int j = ;
for(int i = ; i < MAX; i++) {
if(isPrime(i) == true) {
prime[j] = i;
j++;
}
}
int pC = j;
while(scanf("%d %d",&n,&a) != EOF) {
j = ;
memset(yinCount,,sizeof(yinCount));
memset(yinNum,,sizeof(yinNum));
for(int i = ; i < pC && prime[i] <= a; i++) {
if(a % prime[i] == ) {
int temp = a;
int tempCount = ;
while(temp % prime[i] == ) {
temp = temp/prime[i];
tempCount++;
}
yin[j] = prime[i];
yinNum[j] = tempCount;
j++;
}
} for(int i = ; i <= n; i++) {
for(int k = ; k < j; k++) {
if(i % yin[k] == ) {
int temp = i;
int tempCount = ;
while(temp % yin[k] == ) {
temp = temp/yin[k];
tempCount++;
}
yinCount[k] = yinCount[k] + tempCount;
}
}
} /* for(int i = 0; i < j; i++) {
printf("%d %d %d\n",yin[i],yinNum[i],yinCount[i]);
}*/
// 1 2 3 4 5
// 2 2 2 2 2
int ans = ;
bool flag = true;
while(flag) {
for(int i = ; i <= j; i++) {
yinCount[i] = yinCount[i] - yinNum[i];
if(yinCount[i] < ) {
flag = false;
break;
}
}
if(flag == true) {
ans++;
}
} printf("%d\n",ans);
}
return ;
}

九度oj 题目1104:整除问题的更多相关文章

  1. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  2. hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人

    钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  3. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  4. 九度oj 题目1007:奥运排序问题

    九度oj 题目1007:奥运排序问题   恢复 题目描述: 按要求,给国家进行排名. 输入:                        有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...

  5. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

  6. 九度OJ题目1105:字符串的反码

    tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...

  7. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  8. 九度oj题目1002:Grading

    //不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...

  9. 九度OJ题目1003:A+B

    while(cin>>str1>>str2)就行了,多简单,不得不吐槽,九度的OJ真奇葩 题目描述: 给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号", ...

随机推荐

  1. 将生成的Excel表发送到邮箱

    本文接上一篇,将得到的Excel表发送到邮箱.. 在上一篇中,本人使用的是直接从数据库中获取数据,然后包装成Excel表.现在将该Excel表发送到目的邮箱,如果需要跟上篇一样,定时每天某时刻发送,就 ...

  2. 使用 Cosmos DB 创建和查询 NoSQL 表

    本教程演示如何使用 Azure 门户创建 Azure Cosmos DB 帐户,然后使用 DocumentDB .NET API 创建具有分区键的文档数据库和集合.通过在创建集合时定义分区键,应用程序 ...

  3. X11/extensions/XShm.h: No such file or directory

    CentOS 编译一些开源项目提示:X11/extensions/XShm.h: No such file or directory. 运行命令:yum install libXext-devel就可 ...

  4. 9.18 New Start

    好久没上cnblogs,今天提示我说园龄已经2年1个月了.今天就用一个日记的形式开始第一篇博客吧.我以后比较精髓的文章就放在cnblogs,csdn博客也继续会更新,不过也会慢慢提高文章质量. 今天是 ...

  5. spark 之主成分分析

    C4∗2

  6. 在vue组件库中不能使用v-for

    没事的,有点时候编辑器报错,但运行不一定出错, 在vue组件中注意template标签

  7. docker安装Tensorflow并使用jupyter notebook

    目前网上提供的大多数的方法都是如下: docker pull tensorflow/tensorflow docker run -it -p : tensorflow/tensorflow 但是按照步 ...

  8. Mac终端(Terminal)自定义颜色,字体,背景

    使用Mac作为开发机的时候,苹果终端自带的颜色黑白,字体又小,看起来确实不是很舒服.那推荐大家使用Solarized配色方案.Solarized 是目前最完整的 Terminal/Editor/IDE ...

  9. js 两个数组对象根据账号比较去重,解决直接splice后数组索引改变

    目的获取Arr2中不包含在arr1中的对象 根据Account进行比较,如果相等则删除tempArr数组对象. 结果返回张三 var arr1=[{"account":" ...

  10. No-11.变量进阶

    变量进阶 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递 ...