poj 3090 Visible Lattice Points
来源:互联网 发布:淘宝采集宝贝 编辑:程序博客网 时间:2024/04/29 04:57
基本思想:
不被挡住的条件是(x,y)中的x,y互质,例如A(4,2)会被挡住,会被B(2,1)挡住,B*2=A;
先确定n-1层,再确定第n层;
整个图像关于对角线对称,所以可以只考虑一半的情况,然后*2;
对于第3行,上三角形,确定x,y是否互质就是确定3的欧拉函数值是多少。
#include <stdio.h>
__int64 oulahs[1001];
int prime(int x)
{
int i;
if(1==x)
{
return 0;
}
for(i=2;i*i<=x;i++)
{
if(!(x%i))
{
return 0;
}
}
return 1;
}
void oula(void)//求欧拉函数
{
int i,ans,m,j;
oulahs[1]=1;
for(i=2;i<1001;i++)
{
ans=i;
if(prime(i))
{
ans=ans-ans/i;
oulahs[i]=ans;
continue;
}
for(j=2;j*j<=i;j++)
{
if(i%j==0)
{
m=i/j;
if(prime(j))
{
ans=ans-ans/j;
}
if(m!=j&&prime(m))
{
ans=ans-ans/m;
}
}
}
oulahs[i]=ans;
}
}
int main()
{
int n,i,m,j;
oula();
oulahs[1]=3;
for(i=2;i<1001;i++)
{
oulahs[i]=oulahs[i-1]+oulahs[i]*2;//由n-1层递推到n层
}
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&m);
printf("%d %d %I64d\n",i,m,oulahs[m]);
}
return 0;
}
- POJ 3090 Visible Lattice Points
- poj 3090 Visible Lattice Points
- poj 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- POJ - 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- poj Visible Lattice Points(3090)
- POJ 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- POJ-3090 Visible Lattice Points
- POJ 3090 Visible Lattice Points
- poj 3090:Visible Lattice Points
- POJ 3090 Visible Lattice Points[]
- POJ 3090 Visible Lattice Points
- poj 3090 Visible Lattice Points
- oracle监听器(listener)配置心得
- Oracle RAC 修改 IP 地址
- web.xml参数应用及参数调用方法
- Oracle RAC 常用维护工具和命令
- 自己动手实现IOC和MVC(二)
- poj 3090 Visible Lattice Points
- 九月腾讯,创新工场,淘宝等公司最新面试十三题 .
- 配置实现-静态网页生成
- facebook iOS Tutorial (分享到facebook)
- Oracle RAC 并发与架构
- jboss端口冲突要修改的几个端口
- Register COM dll failed: 0x80029c4a
- 函数式JavaScript编程指南
- Oracle RAC 启动与关闭