POJ 3090 Visible Lattice Points
2016-04-27 18:47
309 查看
题目链接:http://poj.org/problem?id=3090
题意:有一个n+1 * n+1 的点阵,从(0,0)号点向各个点连线,问一共可以看到多少个点( 比如(2,4)会被(1,2)挡到 )。
思路:考虑(x,y)是否能被看到,仅当x与y互质,否则就会有( x/gcd(x,y) , y/gcd(x,y) )去挡到这个点。所以我们直接把2到n的欧拉函数加一遍即可,对于一个可视点(i,j),i>j,必定存在(j,i)所以答案要乘二.还有特殊的三个点额外计算。
欧拉函数:/article/8966376.html
题意:有一个n+1 * n+1 的点阵,从(0,0)号点向各个点连线,问一共可以看到多少个点( 比如(2,4)会被(1,2)挡到 )。
思路:考虑(x,y)是否能被看到,仅当x与y互质,否则就会有( x/gcd(x,y) , y/gcd(x,y) )去挡到这个点。所以我们直接把2到n的欧拉函数加一遍即可,对于一个可视点(i,j),i>j,必定存在(j,i)所以答案要乘二.还有特殊的三个点额外计算。
欧拉函数:/article/8966376.html
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <cstdlib> #include <iostream> #include <algorithm> #include <stack> #include <map> #include <set> #include <vector> #include <sstream> #include <queue> #include <utility> using namespace std; #define rep(i,j,k) for (int i=j;i<=k;i++) #define Rrep(i,j,k) for (int i=j;i>=k;i--) #define Clean(x,y) memset(x,y,sizeof(x)) #define LL long long #define ULL unsigned long long #define inf 0x7fffffff #define mod %100000007 #define mp make_pair #define fi first #define se second #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define mid int m=(l+r)>>1 const int maxn = 1009; int mindiv[maxn],phi[maxn]; void getphi(int n) { rep(i,1,n) mindiv[i] = i; for(int i = 2; i*i <= n; i++) if ( mindiv[i] == i ) { for(int j = i*i; j <= n; j+=i) mindiv[j] = i; } phi[1] = 1; rep(i,2,n) { phi[i] = phi[i/mindiv[i]]; if ( ( i / mindiv[i] ) % mindiv[i] == 0 ) phi[i] *= mindiv[i]; else phi[i] *= ( mindiv[i] - 1 ); } } int cal(int n) { int ans = 3; rep(i,2,n) ans += 2*phi[i]; return ans; } int main() { getphi(1000); int T,n; cin>>T; rep(kase,1,T) { scanf("%d",&n); int ans = cal(n); printf("%d %d %d\n",kase,n,ans); } return 0; }
相关文章推荐
- jquery validate 自定义
- iOS 根据生日计算周龄 —— HERO博客
- java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
- windows下安装gulp-sass编译不过去报错的解决方案;
- [暂停学习几天]
- windows下安装gulp-sass编译不过去报错的解决方案;
- Fork & vfork & clone (转载)
- 斐波那契和青蛙跳台阶问题(Java)
- winform 判断鼠标是否在按钮控件范围内
- 层叠样式优先级CSS
- 冲刺第二天
- 站立会议10
- Java 线程 | yield() 和 join()
- thrift(1):TNonblockingServer分析
- [置顶] [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
- [汇编学习笔记][第十七章使用BIOS进行键盘输入和磁盘读写
- 利用CXF开发SOAP插件
- 我的Android使用openCV记录(3)
- easyui_动态添加隐藏toolbar按钮
- SQL SERVER:开窗函数 SUM() OVER() 数据统计中一例使用