http://www.fjutacm.com/Problem.jsp?pid=1251

想了很久,一开始居然还直接枚举因子d,计算重复了。

首先你要找与n的最大公因子大于m的x的个数。

\[\sum\limits_{x=1}^n [gcd(x,n)>=m]
\]

不能直接枚举d,d必须是n的因子,否则与n的gcd都不可能是d。

\[\sum\limits_{d=m \& d|n}^n \sum\limits_{x=1}^n [gcd(x,n)==d]
\]

后面那个有点眼熟?

\[\sum\limits_{d=m \& d|n}^n \sum\limits_{x=1}^{n/d} [gcd(x,n/d)==1]
\]

果然是欧拉函数:

\[\sum\limits_{d=m \& d|n}^n \varphi(n/d)
\]

然后,查了一下,因子的个数实在不会太多1e8不到1000个,1e17不到100000个。

那就直接质因数分解然后搜索。

一发AC。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const int N=100000; int pri[N+5],tot,zhi[N+5];
void sieve(int n) {
zhi[1]=1;
for(int i=2; i<=n; i++) {
if(!zhi[i])
pri[++tot]=i;
for(int j=1; j<=tot&&i*pri[j]<=n; j++) {
zhi[i*pri[j]]=1;
if(i%pri[j])
;
else
break;
}
}
} ll phi(int n) {
ll res=n;
for(int i=1; i<=tot; i++) {
if(n%pri[i]==0) {
res=res/pri[i]*(pri[i]-1);
while(n%pri[i]==0) {
n/=pri[i];
}
}
if(n==1)
return res;
}
if(n==1)
return res;
else {
res=res/n*(n-1);
return res;
}
} int t,n,m; int fac[100];
int pfac[100];
int ftop=0;
void fj(int n) {
ftop=0;
for(int i=1; i<=tot; i++) {
if(n%pri[i]==0) {
fac[++ftop]=pri[i];
pfac[ftop]=0;
while(n%pri[i]==0) {
n/=pri[i];
pfac[ftop]++;
}
}
}
if(n!=1) {
fac[++ftop]=n;
pfac[ftop]=1;
}
return;
} ll ans; int power(int p,int n) {
if(n==0)
return 1;
int res=1;
while(n--)
res*=p;
return res;
} void dfs(int pos,int cur) {
if(pos>ftop) {
if(cur>=m)
ans+=phi(n/cur);
return;
}
for(int i=0; i<=pfac[pos]; i++) {
dfs(pos+1,cur*power(fac[pos],i));
}
} int main() {
#ifdef Yinku
freopen("Yinku.in","r",stdin);
#endif // Yinku
sieve(N);
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
ans=0;
fj(n);
dfs(1,1);
printf("%I64d\n",ans);
}
}

T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解的更多相关文章

  1. HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...

  2. acm数论之旅--欧拉函数的证明

    随笔 - 20  文章 - 0  评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ...

  3. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  4. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  5. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  6. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

  7. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  8. 51Nod-1136 欧拉函数

    51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...

  9. 欧拉函数 - HDU1286

    欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...

随机推荐

  1. dwr框架中DWRUtil的方法

    dwr框架中DWRUtil的方法 2008-10-14 17:57:23|  分类: JAVA |  标签: |举报 |字号大中小 订阅     7. util.js 功能 util.js包含了一些工 ...

  2. 高性能MySQL(四)

    Schema与数据类型优化 需要优化的数据类型 更小的通常更好 简单就好 尽量避免NULL 整数类型 存储整数,有TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT,分别使用8 ...

  3. hbase shell删除没实用

    用Xshell登陆linux主机后,在hbase shell下不能使用backspace和delete删除误输的指令,这是Xshell的配置问题: 在File->Properties->T ...

  4. 【推荐】初级.NET程序员,你必须知道的EF知识和经验

    阅读目录   推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字 ...

  5. Microsoft Visual Studio 2013 已停止工作的解决方法

    VS最近莫名奇妙老师崩溃,每次只能修复以后才能正常使用, 后参考 http://www.jb51.net/softjc/226465.html 网页的介绍, 恍然:之前使用OSchina GIT 服务 ...

  6. poj 1286 Necklace of Beads poj 2409 Let it Bead HDU 3923 Invoker <组合数学>

    链接:http://poj.org/problem?id=1286 http://poj.org/problem?id=2409 #include <cstdio> #include &l ...

  7. flume topology design . tier num 分层数目

    32:+:1 x:1 x<=8 https://flume.apache.org/FlumeUserGuide.html#flume-topology-design Flume topology ...

  8. react-native填坑--react-navigation

    Navigator已经被React Native废弃了.也许你可以在另外的一个依赖库里react-native-deprecated-custom-components里找到.不过既然官方推荐的是re ...

  9. dialog更新数据

    将数据显示在最上面

  10. s:if

    <s:iterator value="value[3]" id="ques" status="s"> <s:if test ...