题目描述

求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。

输入输出格式

输入格式:

r

输出格式:

整点个数

输入输出样例

输入样例#1: 复制

4
输出样例#1: 复制

4

说明

n<=2000 000 000

/*
处理筛法:
筛素数筛到r<=2e9的话显然数组开不下
显然一个数有<=1个大于它的sqrt的素因子
所以我们筛小于等于sqrt(r)的范围内的素数
然后用筛出来的素数将n质因数分解后可能r!=1
这个时候的n就是n的那个大于sqrt(r)的素因子 处理计算:
如果prime[i]%4==3的话,prime[i]就是个素数,同时也是个高斯素数,对答案无影响
如果prime[i]%4==1,就记录prime[i]的指数tmp,让ans*=(tmp*2+1)
至于为什么这么做,自己看视频去。
https://www.bilibili.com/video/av12131743/
*/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int N=4e4+; bool flag[N];
int prime[N],cnt;
inline void init()
{
for(int i=;i<N;++i)
{
if(!flag[i])
prime[++cnt]=i;
for(int j=,k;j<=cnt&&(k=prime[j]*i)<N;++j)
{
flag[k]=;
if(i%prime[j]==)
break;
}
}
} int n;
int main()
{
init();
scanf("%d",&n);
while((n&)^)
n>>=;
int ans=;
for(int i=,tmp=;i<=cnt&&n!=;++i)
{
if(n%prime[i])
continue;
tmp=;
while(n%prime[i]==)
++tmp,n/=prime[i];
if(prime[i]%==)
ans*=(tmp<<|);
}
if(n>&&n%==)
ans*=;
cout<<(ans<<);
return ;
}
/*
处理筛法:
筛素数筛到r<=2e9的话显然数组开不下
显然一个数有<=1个大于它的sqrt的素因子
所以我们筛小于等于sqrt(r)的范围内的素数
然后用筛出来的素数将n质因数分解后可能r!=1
这个时候的n就是n的那个大于sqrt(r)的素因子 处理计算:
如果prime[i]%4==3的话,prime[i]就是个素数,同时也是个高斯素数,对答案无影响
如果prime[i]%4==1,就记录prime[i]的指数tmp,让ans*=(tmp*2+1)
至于为什么这么做,自己看视频去。
https://www.bilibili.com/video/av12131743/
*/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std; const int N=4e4+; bool flag[N];
int prime[N],cnt;
inline void init()
{
for(int i=;i<N;++i)
{
if(!flag[i])
prime[++cnt]=i;
for(int j=,k;j<=cnt&&(k=prime[j]*i)<N;++j)
{
flag[k]=;
if(i%prime[j]==)
break;
}
}
} int n;
int main()
{
init();
scanf("%d",&n);
while((n&)^)
n>>=;
int ans=;
for(int i=,tmp=;i<=cnt&&n!=;++i)
{
if(n%prime[i])
continue;
tmp=;
while(n%prime[i]==)
++tmp,n/=prime[i];
if(prime[i]%==)
ans*=(tmp<<|);
}
if(n>&&n%==)
ans*=;
cout<<(ans<<);
return ;
}

P2508 [HAOI2008]圆上的整点的更多相关文章

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

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

  2. 洛谷P2508 [HAOI2008]圆上的整点

    题目描述 求一个给定的圆$ (x^2+y^2=r^2) $,在圆周上有多少个点的坐标是整数. 输入格式 \(r\) 输出格式 整点个数 输入输出样例 输入 4 输出 4 说明/提示 \(n\le 20 ...

  3. [bzoj1041] [洛谷P2508] [HAOI2008] 圆上的整点

    Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 只有一个正整数n,n<=2000 000 000 Output 整点个数 Samp ...

  4. luogu P2508 [HAOI2008]圆上的整点

    传送门 推荐去bzoj看个视频了解一下 不要妄想视频直接告诉你题解 但是视频告诉了你后面要用的东西 首先我们要求的是\(x^2+y^2=n^2(x,y\in Z)\)的\((x,y)\)对数,可以转化 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Laravel服务容器的绑定与解析

    本篇文章给大家带来的内容是关于Laravel服务容器的绑定与解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言   老实说,第一次老大让我看laravel框架手册的那天早上,我 ...

  2. python 属性描述符

    import numbers class IntField: # 一个类只要实现了这个魔法函数,那么它就是属性描述符 #数据描述符 def __get__(self, instance, owner) ...

  3. 微服务浅谈&服务治理的演变过程

    这两天对互联网的架构演变进行了简单了解,并对微服务的出现很感兴趣,所以对相关知识进行了简单的整理与总结. 本篇文章先简单介绍了互联网架构的演变,进而介绍了服务化,最后介绍了微服务及最新的服务网格(Se ...

  4. TCP/UDP协议(二)

    面试问题:Tcp/Udp协议是什么,各有什么异同点,各自的使用场景? Tcp协议(传输控制协议) tcp是面向连接的协议,在收发数据之前,必须与对方建立可靠的连接: 三次握手:简单形象通俗描述: 主机 ...

  5. Windows下Redis集群安装与部署

    1.下载 Redis-x64-3.2.100.zip 安装程序 官网下载地址:http://redis.io/download GitHub下载地址:https://github.com/micros ...

  6. C#给企业微信中的成员发送消息

    先去企业微信门户网站获得密钥和应用ID 创建一个静态工具类 using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using ...

  7. WPF布局介绍(1)

    开局一张图,内容全靠...,本系列的文章, 主要针对刚入门.亦或是从 winform/bs转过来的开发人员快速入门的指南, 相对于其它一些文章中会详细的从项目如何建立到其实现的原理及组成部分, 本系列 ...

  8. PIE SDK 基于Dot net bar实现比例尺控件

    最近在搭建主界面的过程中,为了界面美观大方,使用了Dot net bar.但是,在Dot net bar的状态栏中放置PIE SDK自带的比例尺控件,运行主界面程序后,比例尺控件始终不显示比例尺信息, ...

  9. FCC-学习笔记 DNA Pairing

    FCC-学习笔记  DNA Pairing 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecodecamp.cn/;英 ...

  10. 配置DirectX SDK开发环境

    创建工程 选择空工程 添加源文件 添加DirectX SDK测试程序 属性配置 添加头文件和库文件路径 D:\Microsoft DirectX SDK (February 2010)\Include ...