Factovisors
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 4431   Accepted: 1086

Description

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

Input

The input to your program consists of several lines, each containing two non-negative integers, n and m, both less than 2^31.

Output

For each input line, output a line stating whether or not m divides n!, in the format shown below.

Sample Input

6 9
6 27
20 10000
20 100000
1000 1009

Sample Output

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

Source

#include <iostream>
#include <vector>
#include <cstring>
#include <cstdio>
using namespace std;
const int MAXN=;
bool vis[MAXN+];
int prime[MAXN+];
int n,m,p;
vector<pair<int,int> > exp; void init()//素数筛选
{
memset(vis,,sizeof(vis));
p=;
for(int i=; i<=MAXN; ++i)
{
if(vis[i]==false)
prime[p++]=i;
for(int j=; j<p&&i*prime[j]<=MAXN; ++j)
vis[i*prime[j]]=true;
}
} bool check(int x,int y)//判断当前的素数,n是否有这么多个
{
int tmp=n,sum=;
while(tmp)
{
sum+=tmp/x;
tmp/=x;
}
return y<=sum;
} bool judge()
{
for(int i=; i<exp.size(); ++i)
if(!check(exp[i].first,exp[i].second))
return false;
return true;
} int main()
{
init();
while(scanf("%d%d",&n,&m)==)
{
if(m==)
{
printf("%d does not divide %d!\n",m,n);
continue;
}
exp.clear();
int t=m;
for(int i=; i<p&&prime[i]<=m; ++i)
if(m%prime[i]==)
{
int cnt=;
while(m%prime[i]==)
{
m/=prime[i];
++cnt;
}
exp.push_back(make_pair(prime[i],cnt));//m的素数个数与m的素数因子对应
}
if(m!=)
exp.push_back(make_pair(m,));
if(judge())
printf("%d divides %d!\n",t,n);
else
printf("%d does not divide %d!\n",t,n);
}
return ;
}

最新文章

  1. 回调函数透彻理解Java
  2. Java 线程 — ScheduledThreadPoolExecutor
  3. bash 中的变量
  4. Linux环境下实现哲学家就餐问题
  5. oracle 条件语句的写法
  6. Package &#39;chkconfig&#39; has no installation candidate
  7. 09-排序3 Insertion or Heap Sort
  8. 三方贸易-drop ship
  9. 五.CSS盒子模型
  10. xmlns:tools=&quot;http://schemas.android.com/tools&quot;以及tools:context=&quot;.ConfActivity&quot;是什么意思
  11. OpenRisc-48-or1200的SPRS模块分析
  12. MTU介绍以及在windows和linux下怎么设置MTU值
  13. 前端JS面试题汇总 Part 3 (宿主对象与原生对象/函数调用方式/call与apply/bind/document.write)
  14. input 图片上传,第二次上传同一张图片失效
  15. 20175329 2018-2019-3《Java程序设计》第五周学习总结
  16. nginx配置虚拟主机vhost的方法详解
  17. oracle生成AWR报告方法
  18. 爬虫--cheerio
  19. Xamarin/Mono IOS Limitations
  20. Tornado使用-队列Queue

热门文章

  1. NYOJ 53 最少步数
  2. Python之assert断言语句
  3. Tomcat 单(多)实例部署使用
  4. Go中的反射reflect
  5. sublime text 3 15个常用插件介绍
  6. Meta 用法汇总
  7. Mac OS 上的一些骚操作
  8. Spark 系列(十一)—— Spark SQL 聚合函数 Aggregations
  9. Liunx之nginx代理
  10. 「雕爷学编程」Arduino动手做(9)——火焰传感器模块