P2158仪仗队】的更多相关文章

https://www.luogu.org/problemnew/show/P2158 好像以前有个妹子收割铲也是欧拉函数. 因为格点直线上的点,dx与dy的gcd相同,画个图就觉得是欧拉函数.但是要注意对称轴还有左下角那个破点! #include<bits/stdc++.h> using namespace std; #define ll long long const int MAXN=40000+5; int phi[MAXN]; int pri[MAXN],pritop; bool n…
题目传送门 [题目大意] 给定一个n×n的点方阵,求站在左下角的点能看到的点数 注意同一条直线上只能看到一个点 [思路分析] 因为是一个方阵,所以可以对称地算,那么对于半个方阵,这里假设是左上的半个方阵,能看到的点的个数要满足这样的条件 1.x<y 因为是左上的半个方阵,并且x=y的一直线上的点要额外计算 2.gcd(x,y)即x与y互质 这是为了保证一直线上只能看到一个点 容易发现,在满足条件的情况下,这样的x个数恰好等于φ(y) 还需要注意的一点是,最左边一列,最下面一行,还有x=y这条直线…
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大公约数为一,那这题的意思就变成了,在一个n * n的方格内寻找所有点的横坐标和纵坐标互质的点的个数. 但是这样复杂度肯定是过不去的.打表时间花费也是很多的,所以我们需要找到加快速度的方法,就是用欧拉函数来加快速度,所以我们就要实现大的优化,我们先明确欧拉函数是个什么东西. 欧拉函数 \(φ(x)\)…
欧拉函数入门题... 当然如果有兴趣也可以用反演做...类似这题 题意就是求,方阵从左下角出发能看到多少个点. 从0开始给坐标 发现一个点能被看到,那么横纵坐标互质. 然后求欧拉函数的前缀和,* 2 + 1即可. 注意特判. #include <cstdio> ; int p[N], phi[N], top; bool vis[N]; inline void getphi(int b) { phi[] = ; ; i <= b; i++) { if(!vis[i]) { p[++top]…
题目链接 首先来介绍欧拉函数. 设欧拉函数为f(n),则f(n)=1~n中与n互质的数的个数. 欧拉函数有三条引论: 1.若n为素数,则f(n)=n-1; 2.若n为pa,则f(n)=(p-1)*(pa-1). 3.若gcd(a,b)=1,则f(a*b)=f(a)*f(b). 下面代码给出欧拉函数的求法.可以和线性筛结合. ;i<n;++i){ if(!f[i]){ prime[++num]=i; phi[i]=i-; } ;j<=num&&prime[j]*i<n;++…
今天早上你谷崩了 由于脑子抽筋,所以选了一道数学题来做.做着做着就疯了 传送 窝盟先画张图冷静冷静 这是样例的图,其中蓝点是有学生的地方. 窝盟来看一下那些学生可以被C君看到. 假设这张图是一个坐标系,C君在(0,0). C君可以看到的学生:(1,0),(0,1),(1,1),(1,2),(2,1),(1,3),(3,1),(2,3),(3,2) 我们画下来(下图中红点是可以看到的学生) 我们发现红点的横纵坐标的最大公约数都是1,且所有红点关于y=x对称. 所以我们可以求出来一半的红点,再*2-…
P2158 [SDOI2008]仪仗队图是关于y=x对称的,横纵坐标一定是互质的否则在之前就被扫过了,所以就可以用欧拉函数再*2就完了. #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #inclu…
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 输入输出格式 输入格式: 共一个数N 输出格式: 共一个数,即C君应看到的学生人数. 说明 对于 100% 的数据,1 ≤ N ≤ 40000 今天看了一天的欧拉函数,明天月考放飞自我了... 对于欧拉…
P2158 [SDOI2008]仪仗队 欧拉函数 计算下三角的点数再*2+1 观察斜率,自行体会 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ],ans; ],cnt,n; ]; void getphi(){ phi[]=; ;i<=n;++i){ ; ;j<=cnt;++j){ int t=i*pri[j]; if(t>n) break; v[t…
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图). 现在,C君希望你告诉他队伍整齐时能看到的学生人数. 错误日志: 没有特判 \(N = 1\) 的情况 Solution 除开 \((0,1) (1,0) (0,0)\) 这三个点不谈, 可以发现一个点可以被看到, 当且仅当 \(gcd(x, y) = 1…