T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解
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 - 欧拉函数 - 质因数分解相关推荐
- 数论之互质与欧拉函数
文章开始前先给大家安利我学长以前写的数论的blog:aliayc 文章目录 互质 欧拉函数 质因数分解求欧拉函数 筛法求欧拉函数 性质 积性函数 定义 性质 题目 互质 定义 ∀ a , b ∈ N ...
- 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. ...
- poj2154-color-polyan次二面体+欧拉函数优化
N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...
- hdu 1286( 欧拉函数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...
- 费马定理中值定理_数论-欧拉函数、欧拉定理
欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...
- poj2154(Polya+欧拉函数优化模版)
#include <cstdio> #include <cstring> #include<iostream> using namespace std; const ...
- 【数学专题】约数个数与欧拉函数
整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
- bzoj 1409 Password 矩阵快速幂+欧拉函数
可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...
最新文章
- ubuntu上的wordpress安装
- ospf协议_三级网络技术考前选择题3—OSPF协议
- 计算机对油画的影响,现代电脑美术影响下的油画艺术创作
- java resultset 映射到实例_[Java]ResultSet的用法与实例
- 收藏这些芯片原厂的代码仓库
- 详解python可迭代对象、迭代器和生成器
- android全局livedata,Android 使用ViewModel,LiveData高效、简
- Rsync、Inotify-tools简介
- 原生JS实现Ajax下载文件
- [转载] c++与python 数据类型对应
- SendMessage,PostMessage
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
- CodeBlocks下载+界面优化+创建文件+常用快捷键
- 目标检测经典论文详解
- oracle fnd file.log,oracle D_FILE.PUTamp;FND_FILE.PUT_LINE
- 身边有位“别人家的程序员”是什么样的体验?
- OpenCV笔记-对轮廓进行平滑处理
- AIX pv vg lv fs 文件系统
- ShardingSphere分库分表核心原理精讲第十二节 数据安全和脱敏详解
- 【随笔】野生在左 科班在右——数据结构学习誓师贴