题意:

给出m,P,求$\sum\limits_{i=1}^{P-1}if(i)$,其中$f(i)=\sum\limits_{x=1}^{P-1}\sum\limits_{y=1}^{m}[(x+y)^i=(x^i)(\mod P)]$

$1\leq m\leq P-1\leq 10^9+6$

题解:

神仙数学题。。。

由于$P$是奇质数,所以肯定存在原根$g$,那么肯定唯一存在$a$,$b$满足$1\leq a,b\leq P-1$使得$x=g^a$,$y=g^b$,所以有:

$(x+y)^i≡x^i(\mod P)$

$(g^{a}+g^{b})^i≡g^{ai}(\mod P)$

$(1+g^{b-a})^i≡1(\mod P)$

由于$1+g^{b-a}\geq 2$,所以必定存在唯一的$k$满足$1\leq k\leq P-1$使得$g^k≡1+g^{b-a}(\mod P)$;

显然$g^{ki}≡1(\mod P)$,所以$ki≡0(\mod P-1)$;

那么$k=a\times\frac{P-1}{gcd(P-1,i)}$,其中$a=1,2,3,...,gcd(P-1,i)-1$;

所以满足条件的$k$有$gcd(P-1,i)-1$个,固定$y$,则有$x≡y(g^{k}-1)^{-1}(\mod P)$;

易知若$y(g^{k_1}-1)^{-1}≡y(g^{k_2}-1)^{-1}(\mod P)$,则$g^{k_1}≡g^{k_2}(\mod P)$,即$k_1=k_2$;

所以对于确定的$y$,$x$会有$gcd(P-1,i)-1$种不同取值。

至此式子化为$f(i)=m(gcd(P-1,i))$

然后大力推一波式子:

$\sum\limits_{i=1}^{P-1}if(i)=m\sum\limits_{i=1}^{P-1}i((gcd(P-1),i)-1)=m\sum\limits_{i=1}^{P-1}i(gcd(P-1),i)-m\frac{P\times(P-1)}{2}$

把前半部分拿出来:

$m\sum\limits_{i=1}^{P-1}i(gcd(P-1),i)$

$=\sum\limits_{d|(p-1)}d\sum\limits_{d|i,1\leq i\leq P-1}i[gcd(P-1,i)=d]$

$=\sum\limits_{d|(p-1)}d^2\sum\limits_{i=1}^{\frac{P-1}{d}}i[gcd(\frac{P-1}{d},i)=1]$

$=\sum\limits_{d|(p-1)}d^2\frac{\frac{P-1}{d}\varphi(\frac{P-1}{d})+[\frac{P-1}{d}=1]}{2}$(引理)

这样复杂度就是$O(\sqrt{n})$的,可以直接做。

引理:$\sum\limits_{i=1}^{n}i[gcd(i,n)=1]=\frac{1}{2}\sum\limits_{i=1}^{n}(i+(n-i))[gcd(i,n)=1]=\frac{1}{2}n\sum\limits_{i=1}^{n}[gcd(i,n)=1]$

$=\frac{n\varphi(n)+[n=1]}{2}$

证明:若$gcd(i,n)=1$,那么$gcd(n-i,n)=1$。

代码:

 1 #include<algorithm>
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<cmath>
 6 #define eps 1e-4
 7 #define mod 1000000007
 8 #define S(n) (ll)(n*(n+1)/2)
 9 using namespace std;
10 typedef long long ll;
11 ll phi(int x){
12     ll ret=x;
13     for(ll i=2;i*i<=x;i++){
14         if(!(x%i)){
15             ret=ret/i*(i-1);
16             while(!(x%i))x/=i;
17         }
18     }
19     if(x>1)ret=ret/x*(x-1);
20     return ret;
21 }
22 ll f(ll x,ll d){
23     return d*d%mod*((x*phi(x)+(x==1))/2)%mod;
24 }
25 ll calc(ll x){
26     ll ret=0;
27     for(ll i=1;i*i<=x;i++){
28         if(!(x%i)){
29             ret=(ret+f(x/i,i))%mod;
30             if(i*i!=x)ret=(ret+f(i,x/i))%mod;
31         }
32     }
33     ret=(ret-x*(x+1)/2%mod+mod)%mod;
34     return ret;
35 }
36 ll m,p;
37 int main(){
38     scanf("%lld%lld",&m,&p);
39     printf("%lld",calc(p-1)*m%mod);
40     return 0;
41 }

转载于:https://www.cnblogs.com/dcdcbigbig/p/9550179.html

【HDU6051】if the starlight never fade相关推荐

  1. 【FFmpeg】ffmpeg 命令查询二 ( 比特流过滤器 | 可用协议 | 过滤器 | 像素格式 | 标准声道布局 | 音频采样格式 | 颜色名称 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 ( 容器 | 媒体流 | 数据帧 | 数据包 | 编解码器 ...

  2. 【荐】牛逼的WPF动画库:XamlFlair

    [荐]牛逼的WPF动画库:XamlFlair 原文链接:https://github.com/XamlFlair/XamlFlair 翻译:沙漠尽头的狼(本文未全文翻译,建议阅读原文了解更多) Xam ...

  3. 【OpenGL】Shader技巧集合

    这篇文章将收集unity中使用shader的相关技巧和特效,会不断地更新内容.关于在Unity中使用shader的介绍,请参考<[OpenGL]使用Unity来学习OpenGL> 常用的内 ...

  4. day06【后台】两套分配

    day06[后台]两套分配 1.权限控制 权限控制机制的本质就是"用钥匙开锁" 2.给Admin分配Role 2.1.思路 通过页面操作把 Admin 和 Role 之间的关联关系 ...

  5. day05【后台】菜单维护

    day05[后台]菜单维护 1.数据库中存储树形结构 1.1.节点类型 1.2.创建菜单表 执行SQL语句创建数据库表 USE project_crowd CREATE TABLE t_menu (i ...

  6. day04【后台】角色维护

    day04[后台]角色维护 1.权限控制 1.1.为什么需要权限控制 如果没有权限控制, 系统的功能完全不设防, 全部暴露在所有用户面前. 用户登录以后可以使用系统中的所有功能. 这是实际运行中不能接 ...

  7. 不得不爱开源 Wijmo jQuery 插件集(13)-【Tooltip】(附页面展示和源码)

    Wijmo Tooltip 可以给你的网站添加动感十足的提示信息,给您的最终用户完美的工具提示!在上一篇文章中我们,给大家介绍了 Wijmo -列表插件的特性及使用方法.感谢园子中朋友的支持,朋友们的 ...

  8. 基于springboot+bootstrap+mysql+redis搭建一套完整的权限架构【八】【完善整个项目】

    上一章我们已经完成了菜单模块的开发工作,那么到了本章我们将完成我们角色管理模块的开发工作,在本章开始一个全新的模块进行开发的时候我们需要遵守一定的命名和开发规范如下: 1.我们的Controller的 ...

  9. 艾孜尔江_Unity 3D入门常用函数用法及案例概要【干货】

    ** 一. 版本控制 ** 目前流行的两大方式:SVN和Git: 前者采用增量式,后者采用快照式: 前者产生单点故障影响大. 安装git软件. 本地库--历史版本: 暂存区--临时存储: 工作区--写 ...

  10. 【Unity3D】HighlightingSystem3D物体边缘高亮效果使用教程

    #[Unity3D]HighlightingSystem3D物体边缘高亮效果使用教程 1.导入对应的高亮插件HighlightingSystem 2.在场景内给摄像机添加以下组件 3.给需要高亮的物体 ...

最新文章

  1. 《Linux4.0设备驱动开发详解》笔记--第十二章:Linux设备驱动的软件架构思想
  2. virtualBox使用nat模式下ssh连接
  3. Leecode19. 删除链表的倒数第 N 个结点——Leecode大厂热题100道系列
  4. Cent OS yum 安装 Adobe flash player
  5. 2019阿里云618大促主会场全攻略
  6. 计算机组成原理脱机运算器实验数据,实验三:脱机运算器实验报告.pdf
  7. 数据安全对企业的重要性
  8. Linux系统面试常问问题,Linux面试常见问题集锦
  9. 最简单的WIN7内核PE系统(U盘,硬盘,移动硬盘版支持原版WIN7安装
  10. 表格如何把边框线条加粗
  11. numpy的squeeze函数和expand_dims函数
  12. js实现雪花飘落效果
  13. Xilinx FPGA嵌入式开发(一) - EDK及SDK部分术语
  14. Html开屏广告源码,开屏(Splash)广告样式
  15. python相关性分析模型,相关性分析原理及Python实战
  16. 笔记本电脑怎么做计算机题吗,笔记本怎么重装系统 笔记本重装电脑简单教程【图文教程】...
  17. 计算机大专考试题,计算机大专考试试题一.doc
  18. 区块链入华十年兴衰录
  19. 利用python编写爬虫程序,从招聘网站上爬取数据,将数据存入到MongoDB数据库中,将存入的数据作一定的数据清洗后做数据分析,最后将分析的结果做数据可视化
  20. 基于Qt的音乐播放器(二)切换歌曲,调节音量,调节语速,暂停

热门文章

  1. 悟空 mobile.php,悟空CRM无需任何权限的SQL注入漏洞2(ThinkPHP特性)
  2. svn服务器搭建和使用_使用Gitea搭建自己的Git服务器
  3. openstack连通性检查显示验证失败_从超大规模部署到一体机,浪潮云海引领OpenStack落地新范式...
  4. 【kmp专题】牛客网子串(进制转化+kmp/string.find())
  5. Linux中断函数堆栈,Linux在执行信号处理的过程中对堆栈的处理
  6. mysql 写undolog_Mysq bin redo undo log
  7. 机器学习- 吴恩达Andrew Ng Week6 知识总结 Machine Learning System Design
  8. 翻译:where在Swift中的用法
  9. 算法:动态规划解决爬楼梯Climbing Stairs python3
  10. 易筋SpringBoot 2.1 | 第六篇:JdbcTemplate访问MySQL