题意:一个$n\times n$的有标号点阵,现在用一条直线把它们分成两部分,问有多少种不同的分法

结论:方案数就是以点阵上的点为端点且不经过第三个点的线段数

对一个满足要求的线段,将其绕中点顺时针转一个小角度,所在直线是一种切割方案

对于一种分割方案,把直线逆时针旋转直到卡住,卡到的两个点(在原直线的两边且最近的点对)可以连出一条线段

水平竖直的答案为$2n(n-1)$,斜向的答案是$2\sum\limits_{i=1}^n\sum\limits_{j=1}^n(n-i)(n-j)[(i,j)=1]$

后面的sigma可以写成$(n-1)^2+2\sum\limits_{i=1}^n\sum\limits_{j=1}^{i-1}(n-i)(n-j)[(i,j)=1]$

一个结论是$\sum\limits_{i=1}^{n-1}i[(n,i)=1]=\frac{n\varphi(n)}2(n\geq2)$,这是因为在$n\geq3$时如果$(n,i)=1$那么$(n,n-i)=1$,刚好配成$\frac{\varphi(n)}2$对,而在$n=2$时又刚好满足

所以它又可以化成$\sum\limits_{i=2}^n(n-i)\left(n\varphi(i)-\frac{i\varphi(i)}2\right)$,展开后本质是求$\sum\limits_{i=1}^ni^k\varphi(i)$

因为$\sum\limits_{d|n}d^k\varphi(d)\left(\frac nd\right)^k=n^{k+1}$,所以直接杜教筛即可

#include<stdio.h>
#include<map>
using namespace std;
typedef long long ll;
const int T=1000000;
int p;
int mul(int a,int b){return a*(ll)b%p;}
int pr[T+10],phi[T+10],phk[T+10][3];
bool np[T+10];
void sieve(){int i,j,M=0;phi[1]=1;for(i=2;i<=T;i++){if(!np[i]){pr[++M]=i;phi[i]=i-1;}for(j=1;j<=M&&i*pr[j]<=T;j++){np[i*pr[j]]=1;if(i%pr[j]==0){phi[i*pr[j]]=phi[i]*pr[j];break;}phi[i*pr[j]]=phi[i]*(pr[j]-1);}}for(i=1;i<=T;i++){phk[i][0]=(phk[i-1][0]+phi[i])%p;phk[i][1]=(phk[i-1][1]+mul(i,phi[i]))%p;phk[i][2]=(phk[i-1][2]+mul(mul(i,i),phi[i]))%p;}
}
map<int,int>g;
int pre(int k,int n){if(k==0)return n;if(k==1)return(ll)n*(n+1)/2%p;if(k==2)return(__int128)n*(n+1)*(2*n+1)/6%p;return((ll)n*(n+1)/2%p)*((ll)n*(n+1)/2%p)%p;
}
int S(int k,int n){if(n<=T)return phk[n][k];if(g.count(n))return g[n];int s=pre(k+1,n),i,nex;for(i=2;i<=n;i=nex+1){nex=n/(n/i);(s-=mul(pre(k,nex)-pre(k,i-1),S(k,n/i)))%=p;}return g[n]=s;
}
int getT(int n){int s=mul(mul(n,n),S(0,n)-1),t;g.clear();t=mul(S(1,n)-1,3);if(~t&1)t>>=1;elset=mul(t,(p+1)/2);(s-=mul(n,t))%=p;g.clear();t=S(2,n)-1;if(~t&1)t/=2;elset=mul(t,(p+1)/2);(s+=t)%=p;return s;
}
int main(){int n;scanf("%d%d",&n,&p);sieve();printf("%lld",((mul(2*n,n-1)+2ll*(mul(n-1,n-1)+2ll*getT(n)))%p+p)%p);
}

转载于:https://www.cnblogs.com/jefflyy/p/9454578.html

[xsy2282]cake相关推荐

  1. [Cake] 1. CI中的Cake

    在上一篇C#Make自动化构建-简介中,简单的介绍了下Cake的脚本如何编写以及通过Powershell或者Bash在本地运行Cake脚本.本篇在此基础上,介绍下如何在CI环境中使用Cake. 1. ...

  2. Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake 线段树维护dp

    D. Babaei and Birthday Cake 题目连接: http://www.codeforces.com/contest/629/problem/D Description As you ...

  3. hdu 4454 Stealing a Cake(三分之二)

    题目链接:hdu 4454 Stealing a Cake 题目大意:给定一个起始点s,一个圆形.一个矩形.如今从起点開始,移动到圆形再移动到矩形.求最短距离. 解题思路:在圆周上三分就可以.即对角度 ...

  4. hdu 1722 Cake 数学题

    Cake                                                                   Time Limit: 1000/1000 MS (Jav ...

  5. 记录使用 Cake 进行构建并制作 nuget 包

    书接上一回(https://www.cnblogs.com/h82258652/p/4898983.html)?[手动狗头] 前段时间折腾了一下,总算是把我自己的图片缓存控件(https://gith ...

  6. zoj 3511 Cake Robbery(线段树)

    题目链接:zoj 3511 Cake Robbery 题目大意:就是有一个N边形的蛋糕.切M刀,从中挑选一块边数最多的.保证没有两条边重叠. 解题思路:有多少个顶点即为有多少条边,所以直接依照切刀切掉 ...

  7. .net持续集成cake篇之cake介绍及简单示例

    cake介绍 Cake 是.net平台下的一款自动化构建工具,可以完成对.net项目的编译,打包,运行单元测试,集成测试甚至发布项目等等.如果有些特征Cake没有实现,我们还可以很容易地通过扩展Cak ...

  8. 使用 Cake 推送 NuGet 包到 AzureDevops 的 Artifacts 上

    大家好,我最近在想如何提交代码的时候自动的打包 NuGet 然后发布到 AzureDevOps 中的 Artifacts,在这个过程中踩了很多坑,也走了很多弯路,所以这次篇文章就是将我探索的结果和我遇 ...

  9. [Cake] 2. dotnet 全局工具 cake

    在上篇博客[Cake] 1. CI中的Cake中介绍了如何在CI中利用Cake来保持与CI/CD环境的解耦. 当时dotnet 2.1还未正式发布,dotnet 还没有工具的支持,使得安装cake非常 ...

  10. 走进 Cake for .NET

    一.什么是 Cake Cake(C# Make) 是一个使用 C#  DSL 面向 Task 的跨平台构建自动化系统,像编译代码,复制文件和文件夹,运行单元测试,压缩文件和构建 NuGet 包. 更多 ...

最新文章

  1. PHP的cookie与session的使用
  2. jQuery技术内幕:深入解析jQuery架构设计与实现原理
  3. windows server 2008 如何查看异常重启日志
  4. Kubernetes对象中的PersistentVolume、PersistentVolumeClaim和StorageClass的概念关系
  5. 【django】配置文件
  6. halcon2D Metrology测量算子,卡尺测量算子,持续更新
  7. linux离线安装redmine_Feem:免流量跨平台文件传输工具,支持离线分享
  8. html外边框设为虚线,科技常识:html设置虚线边框的方法
  9. java多线程详解(8)-volatile,Atomic比较
  10. php软件开发--linux进阶
  11. html5图像、图片处理【转】
  12. python怎么看待_如何看待将Python作为少儿编程的基础语言?
  13. 开心消消乐html5游戏在线玩,开心消消乐在线玩
  14. Linux之VM12+ CentOS7安装以及网络配置
  15. C语言----整钱换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同的兑换方法?(同理n元硬币的兑换方法呢?n元由用户输入)
  16. 计算机应用基础考试制作表格,计算机应用基础考试---Excel电子表格公式与函数...
  17. ng-zorro里的“Descriptions描述列表”使用
  18. 无法连接imssage信息服务器,苹果iPhone X用iMessage发短信信息总是失败解决方法
  19. Color Banding的个人记录
  20. 【大数据】什么是数据集成?(SeaTunnel 集成工具介绍)

热门文章

  1. AngularJS 模板
  2. Hyper snap
  3. 【转载】Deferred Shading
  4. iBATIS In Action:iBATIS的安装和配置
  5. linux 多线程(一)条件变量
  6. aspxgridview将所选项导出ASPxGridViewExporter1
  7. 几句话介绍MagicAjax
  8. libtool的作用及应用【转载】
  9. 一道经典JS题(关于this)
  10. MongoDB小结26 - 地理空间索引