题面

给定圆的半径,求圆上整点数

这是一道很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]圆上的整点 解题报告的更多相关文章

  1. 2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ π )

    2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ \(\pi\) ) https://www.luogu.com.cn/problem/P2508 题意: 求一个给定的圆 \( ...

  2. BZOJ 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3621  Solved: 1605[Submit][Sta ...

  3. bzoj 1041: [HAOI2008]圆上的整点 数学

    1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  4. bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 853[Submit][Stat ...

  5. 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4298  Solved: 1944[Submit][Sta ...

  6. BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4210  Solved: 1908[Submit][Sta ...

  7. 【BZOJ1041】[HAOI2008]圆上的整点

    [BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...

  8. 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 ...

  9. BZOJ1041 [HAOI2008]圆上的整点 【数学】

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4631  Solved: 2087 [Submit][S ...

随机推荐

  1. 求eclipse中的java build path 详解

    我也找了一下资料,但未找到相关的正式说明,我只能凭经验告诉你. 1,Source是指资源的路径.例如在没有包含res之前,资源是放在与src同级位置,或者通过/res/*.*来操作的.2,Projec ...

  2. html实体字符转换成字符串

    function EntityToString(value) { let tag = document.createElement("div"); tag.innerHTML = ...

  3. hdu 4114 Disney's FastPass(最短路+状态压缩)

    Disney's FastPass Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  4. webstorm破解教程

    1.下载地址 官网:https://www.jetbrains.com/webstorm/ 下载好之后按照提示安装即可,这里就不再多说了.下面直接说说如何使用补丁破解. 2.使用补丁破解 (http: ...

  5. springmvc使用javabean作为请求参数

    1  首先写两个javabean对象  person 和 address 代码如下.两个类之间的关系如代码中 package cn.bean.demo.bo; public class Person ...

  6. [转]Jmeter压力测试工具安装及使用教程

    一.Jmeter下载 进入官网:http://jmeter.apache.org/ 1.第一步进入官网如下图 2.选择进行下载,下载下来为一个压缩包,解压即可. 3.我下载的是jmeter4.0版本, ...

  7. 走过的laravel-admin 的坑

    一.http://laravel-admin.org/docs/#/zh/  大家可以根据这个安装1.5 版本的laravel后台管理, 他很方便哦,有很多方法他都自己自己封装了. 二.大家如果想好好 ...

  8. mysql 第三课 jdbc基础操作

    jdbc连接可以大致分为5步: 1.注册驱动 2.获取连接 3.编写语句 4.执行语句 5.关闭连接 其中可以设置参数等等. 1.我们先建一个项目目录: 其中com.etc.dao为数据访问对象 co ...

  9. 基于AutoIt3的运维工具

    #Region ;**** 编译指令由 AutoIt3Wrapper 选项编译窗口创建 **** #AutoIt3Wrapper_Icon=favicon.ico #AutoIt3Wrapper_Co ...

  10. dotnet 通过 WMI 获取系统安装软件

    本文告诉大家如何通过 WMI 获取系统安装的软件,这个方法不能获取全部的软件 通过 Win32_Product 可以获取系统安装的软件 var mc = "Win32_Product&quo ...