[luogu6860]象棋与马
根据扩欧$(a,b)=1$必须要满足,同时,若$a+b$为偶数则格子的”奇偶性“不变,因此$a+b$必须为奇数
反过来,容易证明满足$(a,b)=1$且$a+b$为奇数则一定可行(构造从$(0,0)$到$(0,1)$的一组解即可)
不妨假设$a$为奇数、$b$为偶数(答案再乘以2),分两类考虑:
1.$a<b$,显然与$b$互素的数必然是奇数,因此即$\sum_{2i\le n}\varphi(2i)$
2.$a>b$,由于$(a,b)=1$等价于$(a,a-b)=1$,因此每一个小于$a$且与$a$互素的奇数与另一个偶数对应,因此即$\sum_{2i+1\le n}\frac{\varphi(2i+1)}{2}$
不妨先把答案的2乘进去,那么即$f_{n}=\sum_{i=1}^{n}\varphi(i)+\sum_{2i\le n}\varphi(2i)$(偶数要算两次)
根据积性或$\varphi$的计算过程,若$i$为奇数,则有$\varphi(2i)=\varphi(i)$,若$i$为偶数,则$\varphi(2i)=2\varphi(i)$
对于$\sum_{2i\le n}\varphi(2i)$,对$i$的奇偶性分类讨论,即$\sum_{2i\le n}\varphi(2i)=\sum_{4i\le n}\varphi(2i)+\sum_{4i+2\le n}\varphi(2i+1)=f_{\frac{n}{2}}$
根据$f_{n}=\sum_{i=1}^{n}\varphi(i)+f_{\frac{n}{2}}$,再用杜教筛优化,时间复杂度可以做到$o(Tn^{\frac{2}{3}}\log_{2}n)$,可以通过

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 40000005
4 #define ull unsigned long long
5 int t,vis[N],p[N];
6 ull n,ans,phi[N];
7 map<ull,ull>mat;
8 ull calc(ull n){
9 if (n<N-4)return phi[n];
10 if (mat[n])return mat[n];
11 ull ans;
12 if (n&1)ans=(n+1)/2*n;
13 else ans=n/2*(n+1);
14 for(ull i=2,j;i<=n;i=j+1){
15 j=n/(n/i);
16 ans-=(j-i+1)*calc(n/i);
17 }
18 return mat[n]=ans;
19 }
20 int main(){
21 phi[1]=1;
22 for(int i=2;i<N-4;i++){
23 if (!vis[i]){
24 p[++p[0]]=i;
25 phi[i]=i-1;
26 }
27 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){
28 vis[i*p[j]]=1;
29 if (i%p[j])phi[i*p[j]]=phi[i]*phi[p[j]];
30 else{
31 phi[i*p[j]]=phi[i]*p[j];
32 break;
33 }
34 }
35 }
36 for(int i=2;i<N-4;i++)phi[i]=phi[i]+phi[i-1];
37 scanf("%d",&t);
38 while (t--){
39 scanf("%llu",&n);
40 ans=0;
41 while (n>1){
42 ans+=calc(n);
43 n/=2;
44 }
45 printf("%llu\n",ans);
46 }
47 }
[luogu6860]象棋与马的更多相关文章
- 洛谷 P6860 - 象棋与马(找性质+杜教筛)
题面传送门 首先我们来探究一下什么样的 \((a,b)\) 满足 \(p(a,b)=1\).不难发现只要点 \((1,0)\) 能够到达,那么网格上所有点都能到达,因为由于 \((1,0)\) 能够到 ...
- Solution -「LGR-087」「洛谷 P6860」象棋与马
\(\mathcal{Description}\) Link. 在一个 \(\mathbb R^2\) 的 \((0,0)\) 处有一颗棋子,对于参数 \(a,b\),若它当前坐标为 \((x ...
- hdu1372 dfs搜索之国际象棋的马
原题地址 题意 一个8x8的国际象棋棋盘,你有一个棋子"马".算出棋子"马"从某一格到还有一格子的最少步数. 与普通dfs不同的是,你能走的路线不是上下左右,四 ...
- 【算法】深度优先 马走日 Hamilton routes
在n*m的棋盘中,马只能走“日” 字.马从位置(x,y)处出发,把棋盘的每一格都走一次,且只走一次.找出所有路径. ××××××××××××× 类似问题: 在半个中国象棋棋盘上,马在左下角(1,1)处 ...
- uva-439
题意:骑士在一个8*8的棋盘上移动,1-8代表行号,a-h代表列号,给出骑士的初始位置和目的位置,求骑士最少的移动步数:题目隐含一层意思(骑士移动规则是中国象棋的“马”的走法) 输入:一串字符串,包含 ...
- UML从需求到实现---类图(1)
上次写到了UML的包图,用例等:接上:UML从需求到实现---包图 按照UML中图的出现顺序.当做完包图以后.我们下一步要做的当然是类图,类图也是UML中的三大核心图之一. 看到很多文章在描述类图的时 ...
- TYVJ P1074 武士风度的牛 Label:跳马问题
背景 农民John有很多牛,他想交易其中一头被Don称为The Knight的牛.这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法).虽然这头神奇的牛不能跳到 ...
- HDU 5794 A Simple Chess (容斥+DP+Lucas)
A Simple Chess 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5794 Description There is a n×m board ...
- UVA Knight Moves
题目例如以下: Knight Moves A friend of you is doing research on the Traveling Knight Problem (TKP) where ...
随机推荐
- javascriptRemke之原型的重要性
前言:JavaScript的原型对象一直是新人学习js的一大重大阻碍,但是原型的知识往往又是面试中常常会被深挖的一个点,为什么会这样呢?本文带你揭秘JavaScript原型的重要性,了解重要性之后再进 ...
- $\Large{\LaTeX}$ 常用公式
$$\Large{\LaTeX}$$: \[\Large{\LaTeX} \] $ $ 表示行内 $$ $$ 表示独立 $\operatorname{lcm}(x)$\(\operatorname{l ...
- 题解 GRE Words Revenge
题目传送门 题目大意 给出 \(m\) 次操作,分别为以下两种操作: 学习一个单词 给出一个段落,查询里面有多少个学过的单词.注意,如果学习过 \(\text{ab,bc}\) ,当前查询段落为 \( ...
- bash反弹shell
part1:不求甚解的本地复现 攻击端Debian 10.x: 192.168.208.134 受害端Ubuntu : 192.168.208.135 攻击端打开(监听)某端口: 键入命令:[nc ...
- 【UE4】Windows 的几种打包方式
简述 自动化工具(Unreal Automation Tool,简称 UAT) 自动化工具使用特定的命令 BuildCookRun 封装流程包含 构建(Build):该阶段将为所选择的平台编译可执行文 ...
- 生产环境全链路压测平台 Takin
什么是Takin? Takin是基于Java的开源系统,可以在无业务代码侵入的情况下,嵌入到各个应用程序节点,实现生产环境的全链路性能测试,适用于复杂的微服务架构系统. Takin核心原理图 Taki ...
- Java多线程中的死锁
Java多线程中的死锁 死锁产生的原因 线程死锁是指由两个以上的线程互相持有对方所需要的资源,导致线程处于等待状态,无法往前执行. 当线程进入对象的synchronized代码块时,便占有了资源,直到 ...
- [CPP] 类的内存布局
本文可以解决下面 3 个问题: 以不同方式继承之后,类的成员变量是如何分布的? 虚函数表及虚函数表指针,在可执行文件中的位置? 单一继承.多继承.虚拟继承之后,类的虚函数表的内容是如何变化的? 在这里 ...
- WebGL着色器渲染小游戏实战
项目起因 经过对 GLSL 的了解,以及 shadertoy 上各种项目的洗礼,现在开发简单交互图形应该不是一个怎么困难的问题了.下面开始来对一些已有业务逻辑的项目做GLSL渲染器替换开发. 起因是看 ...
- TVS管性能及选型总结
https://wenku.baidu.com/view/5b5bda5526fff705cc170af8.html