洛谷3678:简单的数学题(画柿子+杜教筛)
来源:互联网 发布:指南针软件好用吗 编辑:程序博客网 时间:2024/04/29 16:06
最近看了《魔法少女伊莉雅~雪下的誓言》,
这部番除了百合与萌以外还有其他东西,
就和当初看《fate》的我一样。
题面
题意:求
这就是数论题,自己数学课上半个小时推出来,看Kscla的博客一个下午才懂。
根据我两页草稿纸的结果,原式为
对右边进行杜教筛就可以了。
(我今天本来想学洲阁筛的,结果沉迷到这题了)
#include <iostream>#include <fstream>#include <algorithm>#include <cmath>#include <ctime>#include <cstdio>#include <cstdlib>#include <cstring>#include <map>using namespace std;#define mmst(a, b) memset(a, b, sizeof(a))#define mmcp(a, b) memcpy(a, b, sizeof(b))typedef long long LL;const int N=10100000,nn=10000000;LL n,p,ans;int phi[N],prime[N],num;bool b[N];map<LL,LL> mp;LL get1(LL x){ LL y=x+1; if(!(y&1)) y=y/2; else x=x/2; x%=p; y%=p; return x*x%p*y%p*y%p;}LL get2(LL x){ LL y=x+1,z=2*x+1; bool f2=false,f3=false; if ( !f2 && !(x%2) ) x/=2,f2=true; if ( !f3 && !(x%3) ) x/=3,f3=true; if ( !f2 && !(y%2) ) y/=2,f2=true; if ( !f3 && !(y%3) ) y/=3,f3=true; if ( !f2 && !(z%2) ) z/=2,f2=true; if ( !f3 && !(z%3) ) z/=3,f3=true; x%=p; y%=p; z%=p; return x*y%p*z%p;}LL work(LL x){ if(x<=nn) return phi[x]; if(mp.count(x)) return mp[x]; LL res=get1(x),last; for(LL i=2;i<=x;i=last+1) { last=x/(x/i); res=(res-(get2(last)-get2(i-1)+p)%p*work(x/i)%p+p)%p; } mp[x]=res; return res;}int main(){ cin>>p>>n; phi[1]=1; for(int i=2;i<=nn;i++) { if(!b[i]) { phi[i]=i-1; prime[++num]=i; } for(int j=1;j<=num&&prime[j]*i<=nn;j++) { b[i*prime[j]]=1; if(i%prime[j]==0) { phi[i*prime[j]]=phi[i]*prime[j]; break; } phi[i*prime[j]]=phi[i]*(prime[j]-1); } } for(int i=1;i<=nn;i++) phi[i]=((LL)phi[i-1]+(LL)phi[i]*i%p*i%p)%p; LL last; for(LL i=1;i<=n;i=last+1) { last=n/(n/i); ans=(ans+(get1(last)-get1(i-1)+p)%p*work(n/i)%p)%p; } cout<<ans<<endl; return 0;}
阅读全文
0 0
- 洛谷3678:简单的数学题(画柿子+杜教筛)
- 洛谷P3768:简单的数学题 (杜教筛)
- 洛谷p3768 简单的数学题
- 洛谷P1445(数学+画柿子+线性筛)
- bzoj4555(数学推导+画柿子+NTT)
- cogs2287(组合数学+画柿子+NTT)
- HDU1594find the max(简单的数学题)
- hrbust--2182 简单的数学题 (约数)
- zyf的简单数学题(找规律)
- 简单的数学题
- 一个简单的数学题
- 一个简单的数学题
- 一个简单的数学题
- 一个简单的数学题
- 程序员是这样炼成的(2)-选择成熟的柿子还是生柿子
- NYOJ 330 一个简单的数学题【数学题】
- [BZOJ2742]-[HEOI2012]Akai的数学作业-画柿子
- HDU1013一个简单的数学题
- 雇员管理系统-SSH版(一)
- Clipboard.js 使用说明
- Java基础——IO流
- 仿Windows记事本简要分析 (Java)
- java 消息机制 ActiveMQ实例
- 洛谷3678:简单的数学题(画柿子+杜教筛)
- python连接mysql数据库
- HttpServletResponse
- 用最少的字介绍最常用的机器学习分类算法
- 哈尔滨理工大学第七届程序设计竞赛初赛(高年级组)F 苦逼的单身狗【DP】
- Spring深入浅出IOC详解
- linux & windows下的动态库制作
- 258. Add Digits
- 用.Net Core控制台模拟一个ASP.Net Core的管道模型