博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3944 Sum
阅读量:5103 次
发布时间:2019-06-13

本文共 1840 字,大约阅读时间需要 6 分钟。

Sum

Time Limit: 10 Sec Memory Limit: 128 MB

Description

1330366-20180620215154715-1242739759.png

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

终于学杜教筛了wakkk!!!
这个普及度极高的东西网上都有,就不赘述了。。。
头铁用 map ,然后觉得很卡常。。。
果然没过。。。。卡了半天都过不去。。。
搞了半天才发现原来两个一起算就好了(当时刚学会杜教筛膨胀的以为自己可以*天。。。。。就想都没想两个分开算的。。。)
这可是个 2 的巨大常数啊!!!
不知道为什么 map 跑的贼快233

#include
using namespace std;const int N = 2500010;struct lpl{ long long PHI, MU;};bool not_prime[N];long long n, tot, prime[N], phi[N], mu[N];map
LPL;inline void prepare(){ mu[1] = 1; phi[1] = 1; for(register int i = 2; i < N; ++i){ if(!not_prime[i]){ prime[++tot] = i; mu[i] = -1; phi[i] = i - 1; } for(register int now, j = 1; prime[j] * i < N; ++j){ now = prime[j] * i; not_prime[now] = true; if(i % prime[j] == 0){ mu[now] = 0; phi[now] = prime[j] * phi[i]; break; } mu[now] = -mu[i]; phi[now] = phi[i] * (prime[j] - 1); } } for(register int i = 2; i < N; ++i) phi[i] += phi[i - 1], mu[i] += mu[i - 1];}lpl Query(long long t){ lpl ld; if(t < N){ld.PHI = phi[t]; ld.MU = mu[t]; return ld;} if(LPL[t].PHI) return LPL[t]; long long last; long long ret1 = (t * (t + 1)) >> 1, ret2 = 1; for(register long long i = 2; i <= t; i = last + 1){ last = min(t, t / (t / i)); ld = Query(t / i); ret1 -= (last - i + 1) * ld.PHI; ret2 -= (last - i + 1) * ld.MU; } ld.PHI = ret1; ld.MU = ret2; LPL[t] = ld; return ld;}int main(){ prepare(); int T; lpl ld; scanf("%d", &T); while(T--){ scanf("%lld", &n); ld = Query(n); printf("%lld %lld\n", ld.PHI, ld.MU); } return 0;}

转载于:https://www.cnblogs.com/LLppdd/p/9206290.html

你可能感兴趣的文章
OWIN是什么?
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
0906第一次作业
查看>>
移动开发平台-应用之星app制作教程
查看>>
jquery validate使用笔记
查看>>
主要的几个脑网络——整理自eegfmri的博客
查看>>
leetcode 459. 重复的子字符串(Repeated Substring Pattern)
查看>>
CABasicAnimation animationWithKeyPath Types
查看>>
JavaScript--eval
查看>>
iOS6与iOS7屏幕适配技巧
查看>>
获取视图尺寸大小方法
查看>>
mysql 历史记录查询
查看>>
sqoop连接Oracle数据库错误异常
查看>>
伪类与超链接
查看>>
HTML语言的一些元素(二)
查看>>
一段js代码的分析
查看>>
centos 7 redis-4.0.11 主从
查看>>
Java的基本数据类型与转换
查看>>
博弈论 从懵逼到入门 详解
查看>>