【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

Sample Output

1 1
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;
}

最新文章

  1. JavaSE 之 final 初探
  2. js 调试
  3. poj 2001:Shortest Prefixes(字典树,经典题,求最短唯一前缀)
  4. php发送post包
  5. yii2.0 图片上传(摘录)
  6. 四、MyBatis主配置文件
  7. 【C#学习笔记】退出程序
  8. iOS开发集成微信支付
  9. Ubuntu下远程访问MySQL数据库
  10. 解决Github使用Fastly CDN而导致不能加载网页的方法
  11. Maven项目不打包*.hbm.xml文件
  12. golang自定义路由控制实现(二)-流式注册接口以及支持RESTFUL
  13. July 09th, 2018. Monday, Week 28th.
  14. 以太坊上发行ERC20代币
  15. Android面试题总结(不定期更新、附答案)
  16. (华中科大)江南雨烟 C++ STL 专栏
  17. 安装MySQL_Python时出现is not a supported wheel on this platform.
  18. linux(CentOS7)中安装erlang(20.3)以及rabbitmq(3.7.9)的步骤以及一些注意事项
  19. 常用工具说明--Java的常用工具
  20. python为什么叫胶水语言?python为什么是系统脚本?

热门文章

  1. 【Python3 爬虫】07_正则表达式(原子)
  2. 《深入PHP:面向对象、模式与实践》(一)
  3. 用jQuery和PHP来实现转盘抽奖程序
  4. oc自定义不定参数函数
  5. JWT—JSON Web Token - 理解JWT网络间应用用户安全认证交互设计
  6. java基础入门-多线程同步浅析-以银行转账为样例
  7. 电脑端的全能扫描王:图片转文字识别、识别pdf、图片中的文字,图片提取txt
  8. javascript中window与document对象、setInterval与setTimeout定时器的用法与区别
  9. 知也atitit.解决struts2&#160;SpringObjectFactory.getClassInstance&#160;NullPointerException&#160;&#160;v2&#160;q31无涯&#160;-&#160;I
  10. C/C++知识要点4——printf函数以及cout的计算顺序