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 231.

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!

m能否被n!整除,题目并不难,细节扣的多。分解m的质因子,然后通过勒让德的结论就能过。

while(n){

  n/=x;

  sum+=n;

}

被英语语法gank了一波,还要注意的是 0和1 也能整除。

#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#define N 1000010
using namespace std;
int vis[N];
int prime[N];
int pn=0,flag;
void gp()
{
for (int i = 2; i <= N; i++) {
if (vis[i]) continue;
prime[pn++] = i;
for (int j = i; j <= N; j += i)
vis[j] = 1;
}
}
int lrd(int n,int x)
{
int sum=0;
while(n)
{
n/=x;
sum+=n;
}
return sum;
}
int main()
{
gp();
//cout<<prime[pn-1]<<endl;
int m,n;
while(~scanf("%d%d",&n,&m))
{
if((n>=m)||(n==0&&m==1))
{
printf("%d divides %d!\n",m,n);
continue;
}
flag=0;
int x=m;
for(int i=0;prime[i]*prime[i]<=m;i++)
{
int cnt=0;
while(x%prime[i]==0)
{
x/=prime[i];
cnt++;
}
if(cnt)
{
int res=lrd(n,prime[i]);
if(res<cnt)
flag=1;
}
}
if((x<=n&&!flag))
printf("%d divides %d!\n",m,n);
else
printf("%d does not divide %d!\n",m,n);
}
}

  

UVA_10139的更多相关文章

随机推荐

  1. tinkphp3.2.3 关于事务处理。

    自己做一个测试,关于事务处理的. 在对多表进行操作的时候 基本上都离不开事务. 有的操作,是要由上一操作后,产的值(如主表里插入后,要获取插入的主键ID值,返回给下面处理表用.)带到后面的表处理当中去 ...

  2. OpenStack Weekly Rank 2015.08.17

    Module Reviews Drafted Blueprints Completed Blueprints Filed Bugs Resolved Bugs Cinder 5 1 1 6 13 Sw ...

  3. day03 - Python基础3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数  温故知新                   ...

  4. MATLAB特殊矩阵以及矩阵转置

    特殊矩阵 通用特殊矩阵 zeros函数:产生全0矩阵,即零矩阵. ones函数:产生....1矩阵,即幺矩阵. eye函数:产生对角线为1的矩阵,当矩阵是方正时,得到单位矩阵. rand函数:产生(0 ...

  5. Hash表的原理

    哈希的概念:Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩 ...

  6. 硬盘和显卡的访问与控制(二)——《x86汇编语言:从实模式到保护模式》读书笔记02

    上一篇博文我们讲了如何看到实验结果,这篇博文我们着重分析源代码. 书中作者为了说明原理,约定了一种比较简单地用户程序头部格式,示意图如下(我参考原书图8-15绘制的,左边的数字表示偏移地址): 所以, ...

  7. ejs判断变量是否为空并输出

    在ejs里输出变量如下: <%=errmsg%> 但如果errmsg变量不存在则会报错:errmsg is undefined 我们可以改为: <%=locals.errmsg || ...

  8. Android Studio 小技巧(1):如何导入AAR文件

    1. 导入AAR.JAR文件 File- > New -> New Module 这样子AAR文件就导入了,然后在app中的build.gradle中做如下添加 dependencies ...

  9. 跨平台图表控件TeeChart使用教程:将图表数据导出为XML格式

    在开发者使用TeeChart进行开发的过程中,不管是在设计时或者运行时都可以使用的图表导出对话框将图表数据轻易地导出为XML格式: TeeChart最新版那下载地址 上图为TeeChart导出对话框的 ...

  10. 阻塞IO, 非阻塞IO, 同步IO,异步IO

    阻塞IO, 非阻塞IO, 同步IO,异步IO 介绍 先说明几个概念 用户空间与内核空间 为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操心系统将虚拟空间(内存)划分为两部分,一部分 ...