博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 10139 Factovisors(数论)
阅读量:6967 次
发布时间:2019-06-27

本文共 1871 字,大约阅读时间需要 6 分钟。

Factovisors

The factorial function, n! is defined thus for n a non-negative integer:
0! = 1   n! = n * (n-1)!   (n > 0)
We say that a divides b if there exists an integer k such that
k*a = b

The input to your program consists of several lines, each containing two non-negative integers, n and m, both less than 2^31. For each input line, output a line stating whether or not m divides n!, in the format shown below.

Sample Input

6 96 2720 1000020 1000001000 1009

Output for Sample Input

9 divides 6!27 does not divide 6!10000 divides 20!100000 does not divide 20!1009 does not divide 1000!

题意:给出n和m,问m是否能整除n的阶乘。

分析:能够对m进行质因数分解,得到每一个素因子的个数。与n!中此因子的个数进行比較,若大于n!中此因子的个数。则不能整除。
#include
#include
#include
const int MAXN = 100005;int vis[MAXN], prime[10000], num;void get_prime() //筛法求素数{ num = 0; memset(vis, 0, sizeof(vis)); for(int i = 2; i < MAXN; i++) { if(!vis[i]) { prime[num++] = i; for(int j = i + i; j < MAXN; j += i) vis[j] = 1; } }}int Cal(int w, int p) //计算w的阶乘中有多少个p{ int ans = 0; while(w) { w /= p; ans += w; } return ans;}bool judge(int n, int m){ int k = (int)sqrt(m+0.5); for(int i = 0; i < num && prime[i] <= k; i++) { if(m % prime[i] == 0) { int cnt = 0; while(m % prime[i] == 0) { cnt++; m /= prime[i]; } if(Cal(n, prime[i]) < cnt) return false; } } //此时若 m!=1,则m必为素数,假设n>=m。则m必然能够整除n! if(m > 1 && n < m) return false; return true;}int main(){ int n, m; get_prime(); while(~scanf("%d%d",&n,&m)) { if(judge(n, m)) printf("%d divides %d!\n", m, n); else printf("%d does not divide %d!\n", m, n); } return 0;}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

你可能感兴趣的文章
201621123069 《Java程序设计》第十一周学习总结
查看>>
配置telnet和SSH
查看>>
教师课堂教学必备的100个妙招,总有一个适合你!
查看>>
C# 设计开发模式 -观察者模式
查看>>
Java进阶篇(一)——接口、继承与多态
查看>>
lcd驱动框架
查看>>
EF Code First执行SQL语句及存储过程
查看>>
linux c 链接详解4-共享库
查看>>
Docker学习笔记_安装ActiveMQ
查看>>
MacOS下打包Python应用
查看>>
冲刺阶段第七天
查看>>
linux下磁盘分区
查看>>
快速获取表的记录数
查看>>
JavaScript_BOM_window
查看>>
Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式
查看>>
WCF 入门之旅(4): 怎样用客户端调用WCF服务
查看>>
oracle12之 多租户容器数据库架构
查看>>
第3章 深入理解盒子模型
查看>>
POJ3061 ZOJ3123 Subsequence【前缀和+二分搜索+尺取法】
查看>>
png库结合zlib库使用出现的一个链接问题的解决
查看>>