UVA 10139 Factovisors
来源:互联网 发布:小霸王网络电视32寸 编辑:程序博客网 时间:2024/05/21 11:46
一道数论题,题意大致是判断一个数m是不是另一个数n的阶乘的因子。判断其实也非常的简单就是看m的因子的的个数是否多于n的阶乘中相应的因子的个数;而计算n的阶乘中因子p的个数由一个算法计算代码如下</span>
int Cal(int w, int p) //计算w的阶乘中有多少个p{ int ans = 0; while(w) { w /= p; ans += w; } return ans;}
而最后实现的代码是
h = n;j = 0;while(h){ h /= p[i]; j += h; }
其中j是最终的计数的个数;
最终的代码如下
#include <iostream>#include <cstring>#include <cstdlib>#include <cmath>#include <vector>#include <functional>#include <cstdio>#include <queue>#include <map>#include <algorithm>#include <stack>#include <utility>typedef long long ll;using namespace std;const int mx = 100000;int cnt,N,p[mx];bool tag[mx];void get_prime (){ int i,j; cnt = 0; N = mx; for(i = 2; i < N; i ++) { if(!tag[i]) p[cnt++] = i; for(j = 0; i * p[j] < N&&j < cnt; j++) { tag[i *p[j]] = 1; if(i % p[j] == 0) break; } }}int main (){ bool OK; int k,i,l,j,h; int n,m; get_prime (); while (~scanf("%d%d",&n,&m)) { if(n >= m) { printf("%d divides %d!\n",m,n); continue; } OK = true; l = m; for(i = 0; i < cnt && p[i] * p[i] <= m &&OK; i++) if(m % p[i] == 0) { k = 0; while(m % p[i] == 0) { k++; m = m / p[i]; } h = n; j = 0; while(h) { h /= p[i]; j += h; } if(k > j) OK = false; } if(m != 1 && n < m) OK = false; if(OK) printf("%d divides %d!\n",l,n); else printf("%d does not divide %d!\n",l,n); } return 0;}
一开始写的时候wa了好多发,主要原因是在处理最终m最终还是一个质数的情况,一开始想的是如果m没有被分成1都不行,可是最后发现只要m小于n就行。
0 0
- UVa 10139 Factovisors
- uva 10139 factovisors
- Uva 10139 Factovisors
- UVa 10139 Factovisors
- UVa 10139 - Factovisors
- UVa 10139 - Factovisors
- UVA 10139 Factovisors
- UVa Problem Solution: 10139 - Factovisors
- UVA 10139 Factovisors(数论)
- 【 UVa 10139】 Factovisors 【 m | n!? 】
- PC/UVa 题号: 110704/10139 Factovisors
- UVa 10139 Factovisors (阶乘能否整除?)
- UVa-10139 Factovisors -(阶乘的整除)
- UVa Problem 10139 Factovisors (阶乘与整除)
- Factovisors-ACM
- JOJ1926:Factovisors
- 110704 Factovisors
- Factovisors - PC110704
- Greenplum数据库升级实务(上)
- 在python 中is和= = 的区别
- lpeg-0.12.2 与struct-0.2 加入cocos2d-x-lua工程
- Zener模型
- NPAPI插件开发详细记录:插件运行流程分析
- UVA 10139 Factovisors
- platform总线、设备与驱动
- join命令
- 积分墙广告平台接入指路
- python字符编码导致dict中key不同
- jquery.validate 扩展验证+异步验证
- NSTableView的使用例子
- OpenStack Kilo版本新功能分析
- 【移动开发】Android应用程序完全退出