题目描述

求一个给定的圆(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 HTML导出 PDF ----- wkhtmltopdf Laravel-snappy

    需求:将复杂的展示页 (包含大量 echarts) 转换成 PDF供用户下载 1.下载安装wkhtmltoxpdf 选择自己的系统版本下载并安装 rpm -ivh wkhtmltox--.centos ...

  2. MySQL 快速添加百万条数据

    需要向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表 创建表 # 内存表 DROP TABLE IF EXISTS `test_memory ...

  3. BCryptPasswordEncoder 判断密码是否相同

    加密 BCryptPasswordEncoder encode = new BCryptPasswordEncoder(); encode.encode(password); 比较 matches(C ...

  4. 【1】hexo+github搭建个人博客的过程记录

    前提: 1.新建一个github仓库 2.安装配置Node.js 3.安装配置Git 前提 步骤1.新建一个github仓库 打开github网站,(注册)登录账号,新建一个仓库; 注:仓库名称要求, ...

  5. C#根据流下载文件

    C#从服务器下载文件可以使用下面4个方法:TransmitFile.WriteFile.WriteFile和流方式下载文件,并保存为相应类型,方法如下: .TransmitFile实现下载 prote ...

  6. Java I/O系统学习系列二:输入和输出

    编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象.“流”屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇文章:<< ...

  7. 解决 new file()在IOS下不兼容 的问题

    最近 做项目,做的要是拍照后上传相片,以file格式上传..所以 拍照 后用canvas生成base64格式再转file..在PC和安卓都是没有问题,到IOS上面不行..new file后就是生成一个 ...

  8. 红黑树实现(c/c++)

    红黑树 简介 一直想写的一种数据结构,非常厉害的思想,插入,删除,查找,修改,都是\(log_2 n\)的时间复杂度. 比AVL更强大的是,插入删除综合效率比AVL要优秀一点. 性质 一颗红黑树是满足 ...

  9. C# Net 合并int集合为字符串,如:输入1,2,3,4,8 输出1~4,8

    C# Net 合并int集合为字符串,如:输入1,2,3,4,8 输出1~4,8 粘贴代码使用: /// <summary> /// 合并int集合,如1,2,3,4,8 输出1~4,8 ...

  10. Alipay SDK验签PHP低于5.5版本错误

    低于PHP5.5版本不支持OPENSSL_ALGO_SHA256函数,要想使用RSA2加密,把OPENSSL_ALGO_SHA256函数替换为:sha256WithRSAEncryption 解密方法 ...