题目描述

求一个给定的圆(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. ng的动画过渡

    动画过渡两种方法 1.使用angular+animation实现 在app-module.ts中引入 BrowserAnimationsModule 1.import { BrowserAnimati ...

  2. 理解 Virtual DOM(摘)及评价

    框架并没有提高web的性能,只是让开发者更加专注的完成业务逻辑,而不用过渡的考虑性能上的优化.如果以性能来比的话,框架是绝对比不过优化后的原生代码的. 二.什么是Virtual DOM Virtual ...

  3. Python 3 的 int 类型详解(为什么 int 不存在溢出问题?)

    在以前的Python2中,整型分为int和long,也就是整型和长整型, 长整型不存在溢出问题, 即可以存放任意大小的数值,理论支持无限大数字. 因此在Python3 中,统一使用长整型,用int表示 ...

  4. Spring+Mybatis动态切换数据源

    功能需求是公司要做一个大的运营平台: 1.运营平台有自身的数据库,维护用户.角色.菜单.部分以及权限等基本功能. 2.运营平台还需要提供其他不同服务(服务A,服务B)的后台运营,服务A.服务B的数据库 ...

  5. IC卡、ID卡、M1卡、射频卡的区别是什么(射频卡是种通信技术)

    IC卡.ID卡.M1卡.射频卡都是我们常见的一种智能卡,但是很多的顾客还是不清楚IC卡.ID卡.M1卡.射频卡的区别是什么,下面我们一起来看看吧. 所谓的IC卡就是集成电路卡,是继磁卡之后出现的又一种 ...

  6. .NET创建Windows定时任务

    创建Windows定时任务教程 1.创建一个控制台应用程序,保证程序正常运行. 2.右键点击我的电脑->点击管理. 3.在计算机管理弹出框->展开计算机管理(本地)->展开系统工具- ...

  7. 【开发笔记】- yml中出现特殊字符启动失败的问题

    问题描述: yml配置中出现特殊字符,启动时抛出异常: Caused by: org.yaml.snakeyaml.constructor.ConstructorException: Can't co ...

  8. Android源码分析(十)-----关机菜单中如何添加飞行模式选项

    一:关机菜单添加飞行模式选项 源码路径:frameworks/base/core/res/res/values/config.xml 增加<item>airplane</item&g ...

  9. Kubernetes概念之mater、node

    很久没写博客了,终于把重心找回来了,不过没有以前有斗志.有理想.有目标了.慢慢来.你若问我我最近几年的规划是什么,还真不知道.突然发现摧毁一个人真的很简单.k8s也是一遍一遍的从入门到放弃,还是要好好 ...

  10. 用matlab计算线性回归问题

    看机器学习的时候遇到的第一个算法就是线性回归,高数中很详细的说明了线性回归的原理和最小2乘法的计算过程,很显然不适合手动计算,好在各种语言都有现成的函数使用,让我们愉快的做个调包侠吧 简单线性回归 R ...