poj3090(欧拉函数)
http://poj.org/problem?id=3090
首先,题目主要是求从0,0能看到的点的个数。
先考虑只有1×1的时候,三个点,根据图明显看出,只需要计算下三角,结果=下三角的个数×2再加1(斜率为1的点)。
那么我们只需要计算斜率从0到1之间的个数就行了,不包括1,包括0.结果设为sum,那么最终就是2*sum+1.
1×1只有一个斜率为0的
2×2斜率有0,1/2(0已经算过了,以后不再算了),其实就多了一个斜率为1/2的。
3×3的时候,有1/3,2/3两个,比以前多了2个
4×4的时候,有1/4,2/4(1/2已经有过了),3/4,所以也是2个
5×5的时候,有1/5,2/5,3/5,4/5,之前都没有,所以多了4个
6×6得到时候,有1/6,2/6(1/3已经有了),3/6(1/2已经有了),4/6(2/3已经有了),5/6,所以只剩2个。
。
。
。
从上面可以发现一个规律,对于n×n,可以从0,0连接到(n,0)到(n,n)上,斜率将会是1/n,2/n......(n-1)/n;
凡是分子和分母能够约分的,也就是有公约数,前面都已经有过了。所以每次添加的个数就是分子和分母互质的个数。
#include<cstdio>
#include<iostream>
#include<cstring>
#define MAX 1005
using namespace std;
int phi[MAX];
void eular()
{phi[1]=1;for(int i=2;i<MAX;i++){if(!phi[i])for(int j=i;j<MAX;j+=i){if(!phi[j]) phi[j]=j;phi[j]=phi[j]/i*(i-1);}}
}
int main()
{int N,n; scanf("%d",&N);eular();for(int k=1;k<=N;k++){scanf("%d",&n);int ans=0;for(int i=1;i<=n;i++){ans+=(phi[i]);}ans=ans*2+1;printf("%d %d %d\n",k,n,ans);}return 0;
}
poj3090(欧拉函数)相关推荐
- 数论 —— 欧拉函数
[定义] 对正整数 n,欧拉函数是小于等于 n 的数中与 n 互质的数的个数,记作: 例如:,因为 1.3.5.7 均与 8 互质. [性质] 1)若 n 为一素数 p,则: 2)若 n 为一素数 p ...
- 【欧拉函数】 欧拉函数计算及打表
文章目录 一.欧拉函数简介 二.欧拉函数计算 三.欧拉函数值打表 四.练手题目 一.欧拉函数简介 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1).此函数以 ...
- poj2154-color-polyan次二面体+欧拉函数优化
N<=1e9,O(nlogn)的做法会超时.从枚举置换转变为枚举轮换长度,然后可以利用欧拉函数,把复杂度变为O(√n * logn) 1 /*-------------------------- ...
- hdu 1286( 欧拉函数 )
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...
- 费马定理中值定理_数论-欧拉函数、欧拉定理
欧拉函数 积性函数 满足 ( 互质) 定义 对于正整数 ,欧拉函数是小于等于 的所有数中与 互质的数的 个数. 欧拉函数是积性函数(这个证明不是很显然,这个链接里面有很多种证明方法) 记作: 公式 , ...
- poj2154(Polya+欧拉函数优化模版)
#include <cstdio> #include <cstring> #include<iostream> using namespace std; const ...
- 【数学专题】约数个数与欧拉函数
整理的算法模板合集: ACM模板 目录 一.约数个数 1. AcWing 1291. 轻拍牛头 2. AcWing 1294. 樱花 2.1 AcWing 197. 阶乘分解 3. AcWing 19 ...
- 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )
整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn)) ②求[1,n]之间每个数的质因数 ...
- bzoj 1409 Password 矩阵快速幂+欧拉函数
可以发现,该数组的mi就是斐波那契数列 所以要矩阵快速幂搞出第n位 但是斐波那契数列上涨的很快,这就需要欧拉定理了 p^phi(q)%q=1(gcd(p,q)==1) p是素数,所以可以用 然后需要5 ...
- hdu1695(莫比乌斯)或欧拉函数+容斥
题意:求1-b和1-d之内各选一个数组成数对.问最大公约数为k的数对有多少个,数对是有序的.(b,d,k<=100000) 解法1: 这个能够简化成1-b/k 和1-d/k 的互质有序数对的个数 ...
最新文章
- 堆排序——HeapSort
- HoloLens开发入门
- 深入浅出python机器学习_如何用python画三维图? add_subplot() Axes3D() plot_surface() gca()
- 51Nod 1322 - 关于树的函数(树DP)
- 文献学习(part77)--UNIC: A fast nonparametric clustering
- 堆的定义与操作(C语言)
- 6月份美国域名总量新增近5.4万个 环比减少51%
- linux shell指令 amp,shell入门基础amp;常见命令及用法
- mysql文件_mysql 的各种文件详细说明
- ubuntu 10.04下vmware tools安装和一些应用
- HDR关键技术:色度学,颜色空间及转换
- 牛客网项目——项目开发(六):点赞,关注和取关,优化登录
- 实验五:Telemetry静态订阅实验
- 搭建JIRA避坑指南
- 莫纳什大学计算机申请案例,莫纳什大学计算机系统工程学士申请.pdf
- 外贸客户催货催的很急的原因
- 最新,EI期刊目录更新,又有1本期刊被剔除
- 微信公众平台的基础对接
- Ubuntu 18.04配置及美化 (20.04 / 22.04基本相同)
- SpringBoot配置多数据源(MySQL+SQLServer)