题目描述

求一个给定的圆(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. jquery取消绑定的方法

    jquery取消绑定的方法 一般用变量控制 不要用unbind() 相应比较慢 <pre> $('.choseitem').on('click', function () { //如果设置 ...

  2. mybatis分页的一种解决方案

    mybatis自定义分页解决方案  1.PageSqlProvider<T> —— 提供默认的分页列表查询 package com.xinyartech.erp.core.base; im ...

  3. codis集群搭建笔记

    一.安装Linux虚拟机 二.安装go运行环境 https://www.cnblogs.com/xmzncc/p/6218694.html wget http://mirrors.flysnow.or ...

  4. ASP.NET MVC自定义Module记录管道事件执行顺序

    1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC. 2. 在项目中新建一个类MyModule,实现IHttpModule接口 namespace SimpleApp.Infr ...

  5. C++中Matrix(矩阵)的基本运算( +、-、=、<<)

    利用二维指针开辟空间形成二维数组: 原题为设计一个Matrix类,实现基本的矩阵运算: 初次设计为HL[10][10]数组,存放矩阵元素,后改为二维指针: 主要问题存在于二维指针理解的不透彻,无法理解 ...

  6. MySQL——python交互

    与python交互之前我们需要安装一个MySQL的驱动模块Connector,这个驱动模块直接在cmd命令行输入 pip install mysql.connector 安装是否成功可以接着输入 py ...

  7. 一、VUE基础回顾1

    1.v-if和v-show v-if 和v-show都可以显示和隐藏元素: 区别:(1)v-if初始值为false那么这个元素不会被渲染 ,v-show不管初始值为何值都会被渲染 (2)v-if是控制 ...

  8. JS中var声明与function声明以及构造函数声明方式的区别

    JS中常见的三种函数声明(statement)方式有这三种: // 函数表达式(function expression) var h = function () { // h } // 函数声明(fu ...

  9. 命令行运行ionic run android 出现running one or more of the platforms Error

    问题如图所示: 或者 这个问题也是由于端口号被占用的原因,解决的方法在上篇博客<Ionic run android失败解决方法>.

  10. Spark MLlib基本算法【相关性分析、卡方检验、总结器】

    一.相关性分析 1.简介 计算两个系列数据之间的相关性是统计中的常见操作.在spark.ml中提供了很多算法用来计算两两的相关性.目前支持的相关性算法是Pearson和Spearman.Correla ...