【BZOJ3944/4805】Sum/欧拉函数求和 杜教筛
2024-08-26 18:22:03
【BZOJ3944】Sum
Description
Input
一共T+1行
第1行为数据组数T(T<=10)
第2~T+1行每行一个非负整数N,代表一组询问
Output
一共T行,每行两个用空格分隔的数ans1,ans2
Sample Input
6
1
2
8
13
30
2333
1
2
8
13
30
2333
Sample Output
1 1
2 0
22 -2
58 -3
278 -3
1655470 2
2 0
22 -2
58 -3
278 -3
1655470 2
题解:
当i等于1时就是答案,剩余的部分递归算下去就行了(先预处理出1000000以内的答案,其余的答案要用map保存)
粘自http://blog.csdn.net/skywalkert/article/details/50500009
求莫比乌斯函数的前缀和类似,从开始推就好了
#include <cstdio>
#include <cstring>
#include <iostream>
#include <map>
#include <utility>
#define MP(A,B) make_pair(A,B)
using namespace std;
const int m=3000000;
typedef long long ll;
int n,num;
ll phi[m+10],mu[m+10],sp[m+10],sm[m+10],pri[m+10];
bool np[m+10];
typedef pair<ll,ll> pll;
map<ll,pll> mp;
pll dfs(ll x)
{
if(x<=m) return MP(sp[x],sm[x]);
if(mp.find(x)!=mp.end()) return MP(mp[x].first,mp[x].second);
ll rp=x*(x+1)>>1,rm=1,i,last;
for(i=2;i<=x;i=last+1)
{
last=x/(x/i);
pll tmp=dfs(x/i);
rp-=tmp.first*(last-i+1);
rm-=tmp.second*(last-i+1);
}
mp[x]=MP(rp,rm);
return MP(rp,rm);
}
int main()
{
int T,i,j;
scanf("%d",&T);
phi[1]=sp[1]=mu[1]=sm[1]=1;
for(i=2;i<=m;i++)
{
if(!np[i]) pri[++num]=i,phi[i]=i-1,mu[i]=-1;
sp[i]=sp[i-1]+phi[i],sm[i]=sm[i-1]+mu[i];
for(j=1;j<=num&&i*pri[j]<=m;j++)
{
np[i*pri[j]]=1;
if(i%pri[j]==0)
{
phi[i*pri[j]]=phi[i]*pri[j];
mu[i*pri[j]]=0;
break;
}
mu[i*pri[j]]=-mu[i];
phi[i*pri[j]]=phi[i]*(pri[j]-1);
}
}
while(T--)
{
ll a;
scanf("%lld",&a);
pll tmp=dfs(a);
printf("%lld %lld\n",tmp.first,tmp.second);
}
return 0;
}
最新文章
- JavaSE 之 final 初探
- js 调试
- poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)
- php发送post包
- yii2.0 图片上传(摘录)
- 四、MyBatis主配置文件
- 【C#学习笔记】退出程序
- iOS开发集成微信支付
- Ubuntu下远程访问MySQL数据库
- 解决Github使用Fastly CDN而导致不能加载网页的方法
- Maven项目不打包*.hbm.xml文件
- golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
- July 09th, 2018. Monday, Week 28th.
- 以太坊上发行ERC20代币
- Android面试题总结(不定期更新、附答案)
- (华中科大)江南雨烟 C++ STL 专栏
- 安装MySQL_Python时出现is not a supported wheel on this platform.
- linux(CentOS7)中安装erlang(20.3)以及rabbitmq(3.7.9)的步骤以及一些注意事项
- 常用工具说明--Java的常用工具
- python为什么叫胶水语言?python为什么是系统脚本?
热门文章
- 【Python3 爬虫】07_正则表达式(原子)
- 《深入PHP:面向对象、模式与实践》(一)
- 用jQuery和PHP来实现转盘抽奖程序
- oc自定义不定参数函数
- JWT—JSON Web Token - 理解JWT网络间应用用户安全认证交互设计
- java基础入门-多线程同步浅析-以银行转账为样例
- 电脑端的全能扫描王:图片转文字识别、识别pdf、图片中的文字,图片提取txt
- javascript中window与document对象、setInterval与setTimeout定时器的用法与区别
- 知也atitit.解决struts2&#160;SpringObjectFactory.getClassInstance&#160;NullPointerException&#160;&#160;v2&#160;q31无涯&#160;-&#160;I
- C/C++知识要点4——printf函数以及cout的计算顺序