蛋糕

news/2024/11/23 2:40:14/

题目大意

CJY很喜欢吃蛋糕,于是YJC弄到了一块蛋糕,现在YJC决定和CJY分享蛋糕。
这块蛋糕上有n^2颗葡萄干,排成了一个n*n的点阵,每颗葡萄干互不相同且被编号为1~n^2。YJC决定沿着一条直线把蛋糕切成两份。YJC和CJY都很喜欢吃葡萄干,所以切出的两份蛋糕必须都包含至少一颗葡萄干。同时他们都不希望吃到不完整的葡萄干,所以切的时候不能经过任意一颗葡萄干。CJY喜欢1号葡萄干,所以他选择了包含1号葡萄干的那块蛋糕,而YJC则选择了另一块。
在吃蛋糕之前,CJY想知道有多少种切蛋糕的方案。两种方案是不同的当且仅当存在一颗葡萄干在一种方案中被分给了CJY,在另一种方案中被分给了YJC。CJY发现自己不会做这道题,所以他来向你请教。这个答案可能很大,你只需要告诉他答案mod p的结果就可以了。

不会推结论
抄了std的式子
然后杜教筛啊

#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
typedef long long ll;
const int maxn=1000000+10;
ll sum[maxn][3],gg[maxn][3];
int phi[maxn],pri[maxn];
bool bz[maxn];
int i,j,k,l,t,n,m,top,mo,ans;
void prepare(){phi[1]=1;fo(i,2,maxn-10){if (!bz[i]) pri[++top]=i,phi[i]=i-1;fo(j,1,top){if ((ll)i*pri[j]>maxn-10) break;bz[i*pri[j]]=1;if (i%pri[j]==0){phi[i*pri[j]]=phi[i]*pri[j];break;}phi[i*pri[j]]=phi[i]*(pri[j]-1);}}fo(i,1,maxn-10){sum[i][0]=(sum[i-1][0]+phi[i])%mo;sum[i][1]=(sum[i-1][1]+(ll)phi[i]*i%mo)%mo;sum[i][2]=(sum[i-1][2]+(ll)phi[i]*i%mo*i%mo)%mo;}
}
int getsum(int n,int k){int a,b,c;if (!k) return n;else if (k==1) return ((ll)n*(n+1)/2)%mo;else if (k==2){a=n;b=n+1;c=2*n+1;if (a%2==0) a/=2;else b/=2;if (a%3==0) a/=3;else if (b%3==0) b/=3;else c/=3;return (ll)a*b%mo*c%mo;}else{a=((ll)n*(n+1)/2)%mo;return (ll)a*a%mo;}
}
int calc(int n,int k){if (n<=maxn-10) return sum[n][k];if (gg[m/n][k]) return gg[m/n][k];int i=2,j,t,s0,s1,s2;s0=getsum(n,1);s1=getsum(n,2);s2=getsum(n,3);while (i<=n){j=n/(n/i);t=(getsum(j,0)-getsum(i-1,0))%mo;(s0-=(ll)t*calc(n/i,0)%mo)%=mo;t=(getsum(j,1)-getsum(i-1,1))%mo;(s1-=(ll)t*calc(n/i,1)%mo)%=mo;t=(getsum(j,2)-getsum(i-1,2))%mo;(s2-=(ll)t*calc(n/i,2)%mo)%=mo;i=j+1;}gg[m/n][0]=s0;gg[m/n][1]=s1;gg[m/n][2]=s2;return gg[m/n][k];
}
int main(){freopen("cake.in","r",stdin);freopen("cake.out","w",stdout);scanf("%d%d",&n,&mo);m=n;prepare();ans=(ll)n*n%mo*2%mo*calc(n,0)%mo;(ans-=(ll)3*n%mo*calc(n,1)%mo)%=mo;(ans+=calc(n,2))%=mo;ans=ans*2%mo;(ans+=mo)%=mo;printf("%d\n",ans);
}

http://www.ppmy.cn/news/588692.html

相关文章

纯HTML5 CSS3制作生日蛋糕

以一个前端开发的身份绘制一个简单的蛋糕庆祝一下今天这个好日子吧&#xff0c;程序员庆生的乐趣与哀愁啊。写的比较简陋&#xff0c;感兴趣的看一下吧。 先发个效果图吧 蛋糕分为三个部分&#xff0c;底部蛋糕&#xff0c;顶层蛋糕和蜡烛部分。HTML的布局结构也是按照这三部分…

买蛋糕

题目描述 野猫过生日&#xff0c;大家当然会送礼物了&#xff08;咳咳&#xff0c;没送礼物的同志注意了哈&#xff01;&#xff01;&#xff09;&#xff0c;由于不知道送什么好&#xff0c;又考虑到实用性等其他问题&#xff0c;大家决定合伙给野猫买一个生日蛋糕。大家不知道…

蛋糕网店/蛋糕店管理系统/蛋糕销售系统

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于蛋糕网店网站当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了蛋糕网店网站&#xff0c;它彻底改变了过去传统的…

DIY蒸蛋糕

可能是最简单的 DIY 蛋糕方法&#xff0c;原材料只需要 4 种&#xff1a;鸡蛋、面粉、白砂糖、牛奶。以下分量足够一家大小四五人享用&#xff0c;当然&#xff0c;按比例缩小也可以&#xff0c;但是蒸煮的时候比较浪费能源&#xff0c;现在的煤气贵呀&#xff01; 鸡蛋&#…

生日蛋糕——真题

题解&#xff1a;DFS剪枝 表层思考&#xff1a; 超了&#xff0c;少了&#xff08;当前运算已经超过最大&#xff0c;小值&#xff09;—体积&#xff0c;表面积–》边界的选取 远瞻&#xff1a; 如果当前的值选的太过临界&#xff0c;会导致后面的值超了&#xff0c;少了&…

平分蛋糕

Cake Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3263 Accepted Submission(s): 1703 Problem Description 一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定…

生日蛋糕

昨日&#xff0c;稀里糊涂就过了一次生日。 kaonuonuo因为考试一结束就要离校&#xff0c;所以提前给我订了生日蛋糕。于是生日只好提前过一次。只是没有人送我生日礼物。唉&#xff01; 童梓说她考完试要三下乡&#xff0c;估计又要提前再过一次生日。 现在才知道生日什么时…

python画蛋糕祝福图片_蛋糕祝福语创意幽默 创意卡通生日蛋糕图片

下文是蜜匠婚礼网精心整理的一篇关于蛋糕祝福语创意幽默以及创意卡通生日蛋糕图片,咱们一起来看看吧,希望对你有所帮助。 一、蛋糕祝福语创意幽默 1、今天是你的生日&#xff0c;我小心翼翼的记录我们点滴&#xff0c;庆幸我们走过的八年有余&#xff0c;庆幸我在年轮韶华中遇见…