hdu GuGuFishtion 6390 数论 欧拉函数
题目:http://acm.hdu.edu.cn/showproblem.php?pid=6390
直接开始证明:
我们设
…………………………………….....…...............……………...(1)
则
…................................….…(2)
为什么是这样呢,因为我们知道


同理得到b的分解和的分解
我们会发现,虽然a和b的分解里可以有相等的部分,但是在里的也就是我们假设为的部分是不会有重复的,那么要由*得出也就是要去除重复部分,的重复部分就是a的和b的的重复部分;那么因为都是乘法,相同的部分就是最大公约数(因为每个都是素数也就是如果a和b的分解没有相同的数那么gcd(, )是不会大于1的);
由此我们开始继续对(2)的后续推论。

我先设
,那么
也就是
(看了很多博客,就给了个易得,虽然说确实很简单但是对于我这个菜鸡就不友好了)
这一部分的证明是看了这个大佬的博客的:http://www.cnblogs.com/H-Riven/p/9494391.html
(再提供给同样是数论萌新的人一篇文库【有需要的话】:https://wenku.baidu.com/view/542961fdba0d4a7302763ad5.html)
设
设
(即在
的情况下
的数量)
那么我们实际上就是要求:
,对于
我们可以预处理得到。但是
就没那么容易得到了;
现在题目就变成求对于
,在
、
的情况下有多少种方案;
这里我设
为
的数量 (C*x表示x的倍数);即可以和HDU1695一样得到
的结论
设
为
的数量
那么:

倒过来求的原因是因为
,也就是我们可以知道最后一位的准确值,那么反过来就可以推到每个位置准确值了;
那么答案就已经出来了;又因为要求的
,对于每个
,是含有有除法的,所以这里要用除法逆元,因为每次的mod都是不同的,所以说每次都要得到逆元,因为
一定会小于min(n,m);所以说每次打从1到 min(n,m)的表比单个值的计算快;
以下是代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e6+;
ll euler[N], inv[N]={, }, F[N], P[N], n, m, mod, mins;
void Euler(){///打欧拉表
register int i, j;
for(i=; i<N; ++i){ euler[i]=i; }
for(i=; i<N; ++i){
if(euler[i]==i){
for(j=i; j<N; j+=i)
euler[j]=euler[j]-euler[j]/i;
}
}
}
void Inv(){///打表求逆元
for(register int i=; i<=mins; ++i){
inv[i]=(ll)(mod-mod/i)*inv[mod%i]%mod;
}
}
int main( ){
Euler();
int T;
register ll ans;
register int i, j;
scanf("%d", &T);
while(T--){
scanf("%I64d%I64d%I64d", &n, &m, &mod);
mins=min(n, m);
Inv();
for(i=; i<=mins; ++i){
F[i]=(n/i)*(m/i)%mod;
}
for(i=mins; i>=; --i){
P[i]=F[i];
for(j=; j*i<=mins; ++j){
P[i]-=P[i*j];
if(P[i]<){
P[i]+=mod;
}
}
}
ans=;
for(i=; i<=mins; ++i){
ans=(ans+(i*inv[euler[i]]%mod)*P[i]%mod)%mod;
}
printf("%I64d\n", ans);
}
}
拙劣的代码
hdu GuGuFishtion 6390 数论 欧拉函数的更多相关文章
- 数论-欧拉函数-LightOJ - 1370
我是知道φ(n)=n-1,n为质数 的,然后给的样例在纸上一算,嗯,好像是找往上最近的质数就行了,而且有些合数的欧拉函数值还会比比它小一点的质数的欧拉函数值要小,所以坚定了往上找最近的质数的决心—— ...
- 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)
题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...
- GuGuFishtion HDU - 6390 (欧拉函数,容斥)
GuGuFishtion \[ Time Limit: 1500 ms\quad Memory Limit: 65536 kB \] 题意 给出定义\(Gu(a, b) = \frac{\phi(ab ...
- HDU 1695 GCD (欧拉函数+容斥原理)
GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- BZOJ-2190 仪仗队 数论+欧拉函数(线性筛)
今天zky学长讲数论,上午水,舒爽的不行..后来下午直接while(true){懵逼:}死循全程懵逼....(可怕)Thinking Bear. 2190: [SDOI2008]仪仗队 Time Li ...
- HDU 5430 Reflect(欧拉函数)
题目: http://acm.hdu.edu.cn/showproblem.php?pid=5430 从镜面材质的圆上一点发出一道光线反射NNN次后首次回到起点. 问本质不同的发射的方案数. 输入描述 ...
- hdu 5279 Reflect phi 欧拉函数
Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...
- HDU 1695 GCD(欧拉函数+容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...
- Codeforces_776E: The Holmes Children (数论 欧拉函数)
题目链接 先看题目中给的函数f(n)和g(n) 对于f(n),若自然数对(x,y)满足 x+y=n,且gcd(x,y)=1,则这样的数对对数为f(n) 证明f(n)=phi(n) 设有命题 对任意自然 ...
随机推荐
- 【Beta阶段】第一次Scrum Meeting!
本次会议为第一次Scrum Meeting会议~ 会议时长:20分 会议地点:依旧是7公寓1楼会客室 昨日任务一览 明日任务一览 刘乾 预定任务:(未完成)#128 学习如何在Github上自动构 ...
- 20135119_涂文斌 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程: Java 班级:1351 姓名:涂文斌 学号:20135119 成绩: ...
- week7:个人博客作业
这周有2个需要注意的地方. 1,课上 这周是由张翼飞老师讲的课,上周已经听过老师讲的一节课了,这周发现,这个老师讲课是理论+案例,我每节课都在第一排坐的,我不知道其他人是什么想法,我是一上课,老师讲理 ...
- C#ToString() 格式化数值
格式字符串采用以下形式:Axx,其中 A 为格式说明符,指定格式化类型,xx 为精度说明符,控制格式化输出的有效位数或小数位数. 格式说明符 说明 示例 输出 C 货币 2.5.ToString(&q ...
- ELK Stack (2) —— ELK + Redis收集Nginx日志
ELK Stack (2) -- ELK + Redis收集Nginx日志 摘要 使用Elasticsearch.Logstash.Kibana与Redis(作为缓冲区)对Nginx日志进行收集 版本 ...
- Linux基础六(网络管理)
目录 一.网络配置 1. IP 地址配置 2. 网络配置文件 3. 虚拟机网络配置参数 二.网络命令 1. 网络环境查看命令 2. 网络测试命令 三.远程会话安全协议-SSH原理 1. SSH 原理 ...
- 用prop还是attr
jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答 ...
- spirngcloud文件
https://blog.csdn.net/liumiaocn/article/details/54309866
- 微信小游戏 项目配置文件 project.config.json
一.项目配置文件project.config.json 小程序开发者工具在每个项目的根目录都会生成一个 project.config.json,在工具上做的任何配置都会写入到这个文件,当重新安装工具或 ...
- BZOJ2169 连边(动态规划)
令f[i][j]表示连i条边时奇点个数为j的方案数,转移时讨论两奇点相连.一奇一偶相连.两偶点相连即可.注意这样会造成重边,那么算出恰好有一条重边的方案数并减掉.由于是有序地考虑每条边,每次还要除以i ...