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]);elsebreak;}}
}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 Yinkufreopen("Yinku.in","r",stdin);
#endif // Yinkusieve(N);scanf("%d",&t);while(t--) {scanf("%d%d",&n,&m);ans=0;fj(n);dfs(1,1);printf("%I64d\n",ans);}
}

转载于:https://www.cnblogs.com/Yinku/p/10877188.html

T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解相关推荐

  1. 数论之互质与欧拉函数

    文章开始前先给大家安利我学长以前写的数论的blog:aliayc 文章目录 互质 欧拉函数 质因数分解求欧拉函数 筛法求欧拉函数 性质 积性函数 定义 性质 题目 互质 定义 ∀ a , b ∈ N ...

  2. TOJ 3990.I guess the gift is a bag! II(质因数、欧拉函数好题)

    题目链接 : http://acm.tju.edu.cn/toj/showp3990.html Coach Yu has lots of bags, every bag has its number. ...

  3. poj2154-color-polyan次二面体+欧拉函数优化

    N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...

  4. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

  5. 费马定理中值定理_数论-欧拉函数、欧拉定理

    欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...

  6. poj2154(Polya+欧拉函数优化模版)

    #include <cstdio> #include <cstring> #include<iostream> using namespace std; const ...

  7. 【数学专题】约数个数与欧拉函数

    整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...

  8. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  9. bzoj 1409 Password 矩阵快速幂+欧拉函数

    可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...

最新文章

  1. ubuntu上的wordpress安装
  2. ospf协议_三级网络技术考前选择题3—OSPF协议
  3. 计算机对油画的影响,现代电脑美术影响下的油画艺术创作
  4. java resultset 映射到实例_[Java]ResultSet的用法与实例
  5. 收藏这些芯片原厂的代码仓库
  6. 详解python可迭代对象、迭代器和生成器
  7. android全局livedata,Android 使用ViewModel,LiveData高效、简
  8. Rsync、Inotify-tools简介
  9. 原生JS实现Ajax下载文件
  10. [转载] c++与python 数据类型对应
  11. SendMessage,PostMessage
  12. Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
  13. CodeBlocks下载+界面优化+创建文件+常用快捷键
  14. 目标检测经典论文详解
  15. oracle fnd file.log,oracle D_FILE.PUTamp;FND_FILE.PUT_LINE
  16. 身边有位“别人家的程序员”是什么样的体验?
  17. OpenCV笔记-对轮廓进行平滑处理
  18. AIX pv vg lv fs 文件系统
  19. ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解
  20. 【随笔】野生在左 科班在右——数据结构学习誓师贴

热门文章

  1. Android官方技术文档翻译——Gradle 插件用户指南(7)
  2. java 集合框架(一)
  3. 解决XP系统启动慢的问题
  4. OpenCV在图像上画线、矩形、椭圆、多边形、填充的多边形、圆、显示文字
  5. Tone Mapping
  6. 图像分析:二值图像连通域标记
  7. swoole-co-pool v1.0.1,Swoole 协程工作池
  8. 求环形数组的最大子数组的和
  9. Linux 格式化扩展分区(Extended)
  10. 《深入理解ES6》笔记——Set集合与Map集合(7)