「Luogu P2508」[HAOI2008]圆上的整点 解题报告
题面
给定圆的半径,求圆上整点数
这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数
真棒!!!
有兴趣的戳这里!!!\(\huge \to\)
思路:
高斯素数的原理,将整数分解质因数后,再把每个质因数分解成高斯素数,对于质数4n+1,它可以有效的分解成高斯素数,而质数4n+3不能,因为3无法分解为高斯素数,所以当一个数有奇数个3因子时,这个圆上没有整点,而3的个数为偶数时,由于能分成两组配对,所以有整点,但3对Ans的影响为0,因为x*1=x,因此只要不变就行了,当由于2的高斯素数表示为1-i*1+i,所以2的个数对Ans无影响
对于25如下:
\[\large 25=5 \times 5
\]\[\large 25=(2-i)(2+i)(2-i)(2+i)
\]所以:
Left Right \(\large 1\) \(\large 1\) \(\large 2-i\) \(\large 2+i\) \(\large 2-i\) \(\large 2+i\) \(\large =3-4i\) \(\large =3+4i\) 这是一种情况\(\large (3,-4)\)
Left Right \(\large 2-i\) \(\large 2-i\) \(\large 2+i\) \(\large 2+i\) \(\large =5\) \(\large =5\) 这是一种情况\(\large (5,0)\)
Left Right \(\large 2+i\) \(\large 2+i\) \(\large 2+i\) \(\large 2+i\) \(\large =3+4i\) \(\large =3-4i\) 这是一种情况\(\large (3,-4)\)
而对于上述
\(\large \times\) \(\large 3-4i\) \(\large 5\) \(\large 3+4i\) \(\large -1\) \(\large -1+4i\) \(-5\) \(\large -3-4i\) \(\large i\) \(\large 4+3i\) \(\large 5i\) \(\large -4+3i\) \(\large -i\) \(\large -4-3i\) \(\large -5i\) \(\large 4-3i\) 所以一共有点对12对
那么高斯素数怎么表示点呢?
它只要一个数,就可以表示点的坐标,RT:

Code:
#include<bits/stdc++.h>
#define N 10000010
#define ll long long
using namespace std;
ll n,m,res,ans=4;
ll a[N],t,T;
ll p[N];
ll s[N];
bool b[N];
int main()
{
ll i,j;
scanf("%lld",&n);
m=n;
for(i=2;i*i<=m;i++)
{
if(!b[i])
{
a[++T]=i;
if(m%i==0)
{
p[++t]=i;
while(m%i==0)
{
m/=i;
s[t]++;
}
}
}
for(j=1;j<=T;j++)
{
if(a[j]*i*i*a[j]>m)
continue;
b[a[j]*i]=1;
if(i%a[j]==0)
continue;
}
}
if(m>1)
{
p[++t]=m;
s[t]=1;
}
for(i=1;i<=t;i++)
if((p[i]-1)%4==0)
ans*=(2*s[i]+1);
printf("%lld",ans);
return 0;
}
「Luogu P2508」[HAOI2008]圆上的整点 解题报告的更多相关文章
- 2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ π )
2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ \(\pi\) ) https://www.luogu.com.cn/problem/P2508 题意: 求一个给定的圆 \( ...
- BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3621 Solved: 1605[Submit][Sta ...
- bzoj 1041: [HAOI2008]圆上的整点 数学
1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 853[Submit][Stat ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4210 Solved: 1908[Submit][Sta ...
- 【BZOJ1041】[HAOI2008]圆上的整点
[BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...
- bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点
http://www.lydsy.com/JudgeOnline/problem.php?id=1041 设 X>0 ,Y>0 X^2 + Y^2 = R^2 X^2 = R^2-Y^2 ...
- BZOJ1041 [HAOI2008]圆上的整点 【数学】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4631 Solved: 2087 [Submit][S ...
随机推荐
- Python基础:26模块
一:模块和文件 1:模块是逻辑上组织 Python 代码的方法,文件是物理层上组织模块的方法.因此,一个文件被看作是一个独立模块,一个模块也可以被看作是一个文件. 模块的文件名就是模块的名字加上扩展名 ...
- 求eclipse中的java build path 详解
我也找了一下资料,但未找到相关的正式说明,我只能凭经验告诉你. 1,Source是指资源的路径.例如在没有包含res之前,资源是放在与src同级位置,或者通过/res/*.*来操作的.2,Projec ...
- Libev源码分析01:Libev中的监视器结构(C结构体实现继承)
在Libev的源码中,用到了一种用C实现类似C++中继承的技巧,主要是用宏和结构体实现. 在Libev中,最关键的数据结构就是各种监视器,比如IO监视器,信号监视器等等.这些监视器的多数成员都是一样的 ...
- ifram子页面与父页面的方法相互调用
parent.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- hdu 1595 find the longest of the shortest(迪杰斯特拉,减去一条边,求最大最短路)
find the longest of the shortest Time Limit: 1000/5000 MS (Java/Others) Memory Limit: 32768/32768 ...
- H3C 帧中继基本配置命令
- UVA 247"Calling Circles"(floyd求传递闭包+SCC)
传送门 题意: 如果两个人相互打电话(直接或间接),则说他们在同一个电话圈里. (a,b) 表示 a 打给 b: 例如,(a,b),(b,c),(c,d),(d,a),则这四个人在同一个电话圈里: 输 ...
- ReentrantReadWriteLock 可重入的读写锁
可重入:就是同一个线程可以重复加锁,可以对同一个锁加多次,每次释放的时候会释放一次锁,直到该线程加锁次数为0,这个线程才释放锁. 读写锁: 也就是读锁可以共享,多个线程可以同时拥有读锁,但是写锁却只能 ...
- POJ 2253 Frogger(SPFA运用)
Description Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Fro ...
- H3C擦除配置