T^TOJ - 1251 - 。◕‿◕。TMD - 欧拉函数 - 质因数分解
http://www.fjutacm.com/Problem.jsp?pid=1251
想了很久,一开始居然还直接枚举因子d,计算重复了。
首先你要找与n的最大公因子大于m的x的个数。
\]
不能直接枚举d,d必须是n的因子,否则与n的gcd都不可能是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 - 欧拉函数 - 质因数分解的更多相关文章
- HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题目解析: Given 5 integers: a, b, c, d, k, you're to ...
- acm数论之旅--欧拉函数的证明
随笔 - 20 文章 - 0 评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ...
- hdu2588 GCD (欧拉函数)
GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ...
- BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 2553 Solved: 1565[Submit][ ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
- COGS2531. [HZOI 2016]函数的美 打表+欧拉函数
题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...
- poj2478 Farey Sequence (欧拉函数)
Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...
- 51Nod-1136 欧拉函数
51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...
- 欧拉函数 - HDU1286
欧拉函数的作用: 有[1,2.....n]这样一个集合,f(n)=这个集合中与n互质的元素的个数.欧拉函数描述了一些列与这个f(n)有关的一些性质,如下: 1.令p为一个素数,n = p ^ k,则 ...
随机推荐
- dwr框架中DWRUtil的方法
dwr框架中DWRUtil的方法 2008-10-14 17:57:23| 分类: JAVA | 标签: |举报 |字号大中小 订阅 7. util.js 功能 util.js包含了一些工 ...
- 高性能MySQL(四)
Schema与数据类型优化 需要优化的数据类型 更小的通常更好 简单就好 尽量避免NULL 整数类型 存储整数,有TINYINT.SMALLINT.MEDIUMINT.INT.BIGINT,分别使用8 ...
- hbase shell删除没实用
用Xshell登陆linux主机后,在hbase shell下不能使用backspace和delete删除误输的指令,这是Xshell的配置问题: 在File->Properties->T ...
- 【推荐】初级.NET程序员,你必须知道的EF知识和经验
阅读目录 推荐MiniProfiler插件 数据准备 foreach循环的陷进 AutoMapper工具 联表查询统计 性能提升之AsNonUnicode 性能提升之AsNoTracking 多字 ...
- Microsoft Visual Studio 2013 已停止工作的解决方法
VS最近莫名奇妙老师崩溃,每次只能修复以后才能正常使用, 后参考 http://www.jb51.net/softjc/226465.html 网页的介绍, 恍然:之前使用OSchina GIT 服务 ...
- 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 ...
- flume topology design . tier num 分层数目
32:+:1 x:1 x<=8 https://flume.apache.org/FlumeUserGuide.html#flume-topology-design Flume topology ...
- react-native填坑--react-navigation
Navigator已经被React Native废弃了.也许你可以在另外的一个依赖库里react-native-deprecated-custom-components里找到.不过既然官方推荐的是re ...
- dialog更新数据
将数据显示在最上面
- s:if
<s:iterator value="value[3]" id="ques" status="s"> <s:if test ...