https://vjudge.net/problem/UVA-11440

题意:

求2——n! 之间有多少个整数x,满足x的所有素因子都大于m

保证m<=n

x的所有素因子都大于m 等价于 x和m!互质

因为m<=n,所以n!是 m!的整数倍

所以只需要求出m!以内和m!互质的个数

答案再乘n!/ m! 即可

关键是求phifac(i)

考虑递推

phi(n)= n*(1-1/p1)*(1-1/p2)……

如果i是质数,那么phifac(i)比 phifac(i-1)多乘一个n*(1-1/n)

否则,phifac(i)比 phifac(i-1)多乘一个n

原理同阶乘质因数分解

#include<cstdio>
#define N 10000001
#define mod 100000007
using namespace std;
int cnt,p[N],phi[N];
long long phifac[N];
bool v[N];
int main()
{
phi[]=;
for(int i=;i<N;i++)
{
if(!v[i])
{
p[++cnt]=i;
phi[i]=i-;
}
for(int j=;j<=cnt;j++)
{
if(i*p[j]>=N) break;
v[i*p[j]]=true;
if(i%p[j]) phi[i*p[j]]=phi[i]*(p[j]-);
else
{
phi[i*p[j]]=phi[i]*p[j];
break;
}
}
}
int n,m; long long ans;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(!n) return ;
ans=;
phifac[]=;
for(int i=;i<=m;i++)
if(!v[i]) phifac[i]=phifac[i-]*(i-)%mod;
else phifac[i]=phifac[i-]*i%mod;
ans=phifac[m];
for(int i=m+;i<=n;i++) ans=ans*i%mod;
printf("%lld\n",ans-);
}
}

UVA 11440 Help Tomisu的更多相关文章

  1. uva 11440 - Help Tomisu(欧拉功能)

    题目链接:uva 11440 - Help Tomisu 题目大意:给定n和m,求从2~n.中的数x.要求x的质因子均大于m.问说x有多少个.答案模上1e9+7. 解题思路: (1)n!=k∗m!(n ...

  2. UVa 11440 - Help Tomisu(欧拉函数 + 问题转换)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. UVa 11440 Help Tomisu (数论欧拉函数)

    题意:给一个 n,m,统计 2 和 n!之间有多少个整数x,使得x的所有素因子都大于M. 析:首先我们能知道的是 所有素数因子都大于 m 造价于 和m!互质,然后能得到 gcd(k mod m!, m ...

  4. Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数。

    /** 题目:Help Tomisu UVA - 11440 链接:https://vjudge.net/problem/UVA-11440 题意:给定正整数N和M, 统计2和N!之间有多少个整数x满 ...

  5. UVa 11440 (欧拉函数) Help Tomisu

    题意: 给出N和M,统计区间x ∈ [2, N!],x满足所有素因子都大于M的x的个数. 分析: 首先将问题转化一下,所有素因子都大于M 等价于 这个数与M!互素 对于k大于M!,k与M!互素等价于 ...

  6. 紫书 例题 10-26 UVa 11440(欧拉函数+数论)

    这里用到了一些数论知识 首先素因子都大于M等价与M! 互质 然后又因为当k与M!互质且k>M!时当且仅当k mod M! 与M!互质(欧几里得算法的原理) 又因为N>=M, 所以N!为M! ...

  7. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  8. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  9. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

随机推荐

  1. codeforces 269C Flawed Flow(网络流)

    Emuskald considers himself a master of flow algorithms. Now he has completed his most ingenious prog ...

  2. su和sudo的使用

    用于用户身份切换 一.su 命令形式 代表内容 su 切换为root,以non-login shell的方式 su - 切换为root,以login shell的方式 su -l 账号 切换为“账号” ...

  3. 第四课——MFC应用程序框架

    一.MFC应用程序类型 上篇文章的彩蛋:可通过使用MFC应用程序向导(MFC AppWizard)的功能来创建所需要的应用程序,这意味着不需要输入任何代码.MFC除了应用程序向导,还对应用程序项目有着 ...

  4. 自动对象&局部静态对象

    一.关键点 对象的生命周期:程序执行过程中,该对象存在的那段时间 局部对象:形参.函数体内部定义的变量 二.自动对象 自动对象:只存在于块执行期间的对象 包括:局部变量.形参 三.局部静态对象 特点: ...

  5. c#基类继承

    [ 塔 · 第 三 条 约 定 ] 编写一个多边形作为基类(成员:定点数)抽象方法(子类实现):体积.边长 正三角形类:成员 边长 长方形类:成员 长宽 using System; using Sys ...

  6. Java中I/O流之缓冲流

    Java 中的缓冲流: 1. 缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘). 2. ...

  7. PAT L2-028 秀恩爱分得快

    https://pintia.cn/problem-sets/994805046380707840/problems/994805054698012672 古人云:秀恩爱,分得快. 互联网上每天都有大 ...

  8. Win10修改编辑hosts文件无法保存怎么办

    Win10无法修改编辑保存hosts文件怎么办?Win10系统默认是没有权限去编辑保存系统里的文件,这也是权限不够才导致修改编辑hosts后无法保存的原因,解决的办法就是把自己的帐户权限给提高就行了. ...

  9. [剑指Offer] 56.删除链表中重复的结点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  10. 2018 杭电多校2 - Naive Operations

    题目链接 Problem Description In a galaxy far, far away, there are two integer sequence a and b of length ...