【BZOJ】【1041】【HAOI2008】圆周上的点

数学


  orz hzwer

  完全不会做……

  很纠结啊,如果将来再遇到这种题,还是很难下手啊……

 

引用题解:

【分析】:

样例图示:

首先,最暴力的算法显而易见:枚举x轴上的每个点,带入圆的方程,检查是否算出的值是否为整点,这样的枚举量为2*N,显然过不了全点。

然后想数学方法。

有了上面的推理,那么实现的方法为:

枚举d∈[1,sqrt(2R)],然后根据上述推理可知:必先判d是否为2R的一约数。

此时d为2R的约数有两种情况:d=d或d=2R/d。

第一种情况:d=2R/d。枚举a∈[1,sqrt(2R/2d)] <由2*a*a < 2*R/d转变来>,算出对应的b=sqrt(2R/d-a^2),检查是否此时的A,B满足:A≠B且A,B互质 <根据上面的推理可知必需满足此条件>,若是就将答案加1

第二种情况:d=d。枚举a∈[1,sqrt(d/2)] <由2*a*a < d转变来>,算出对应的b=sqrt(d-a^2),检查是否此时的A,B满足:A≠B且A,B互质 <根据上面的推理可知必需满足此条件>,若是就将答案加1

因为这样只算出了第一象限的情况<上面枚举时均是从1开始枚举>,根据圆的对称性,其他象限的整点数与第一象限中的整点数相同,最后,在象限轴上的4个整点未算,加上即可,那么最后答案为ans=4*第一象限整点数+4

 

【时间复杂度分析】:

枚举d:O(sqrt(2R)),然后两次枚举a:O(sqrt(d/2))+O(sqrt(R/d)),求最大公约数:O(logN)

 1 /**************************************************************
 2     Problem: 1041
 3     User: Tunix
 4     Language: C++
 5     Result: Accepted
 6     Time:192 ms
 7     Memory:816 kb
 8 ****************************************************************/
 9  
10 //BZOJ 1000
11 #include<cmath>
12 #include<cstdio>
13 using namespace std;
14 typedef long long LL;
15 typedef double lf;
16 /******************tamplate*********************/
17 LL r,ans;
18 LL gcd(LL x,LL y){return y?gcd(y,x%y):x;}
19 bool check(LL y,lf x){
20     if (x==floor(x)){
21         LL x1=x;
22         if (gcd(x1*x1,y*y)==1 && x1*x1!=y*y)
23             return 1;
24     }
25     return false;
26 }
27 int main(){
28     scanf("%lld",&r);
29     for(LL d=1;d<=sqrt(2*r);d++)
30         if (2*r%d==0){
31             for(LL a=1;a<=(LL)sqrt(2*r/(2*d));a++){
32                 lf b=sqrt((2*r)/d-a*a);
33                 if (check(a,b))ans++;
34             }
35             if (d!=2*r/d){
36                 for(LL a=1;a<=(LL)sqrt(d/2);a++){
37                     lf b=sqrt(d-a*a);
38                     if (check(a,b))ans++;
39                 }
40             }
41         }
42     printf("%lld\n",ans*4+4);
43     return 0;
44 }
View Code

1041: [HAOI2008]圆上的整点

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2376  Solved: 1019
[Submit][Status][Discuss]

Description

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

Input

r

Output

整点个数

Sample Input

4

Sample Output

4

HINT

n<=2000 000 000

Source

[Submit][Status][Discuss]

转载于:https://www.cnblogs.com/Tunix/p/4428004.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php authcode java_PHP(authcode)加密解密

//************************加密解密*************************//** $string&#xff1a; 明文 或 密文* $operation&#xff1a;DECODE表示解密,其它表示加密* $key&#xff1a; 密匙* $expiry&#xff1a;密文有效期* */function authcode($string, $operation DECODE, $key…

nginx环境下搭建nagios 3.5.0,及配置pnp4nagios画图

本文基于《LNMP最新源码安装脚本》,Nagios依赖PHP环境和perl环境&#xff0c;由于Nginx不支持Perl的CGI&#xff0c;需先来搭建Perl环境&#xff0c;Nagios原理介绍略。一、下载最新稳定源码包和Perl脚本wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.74.tar.gzwget…

python indexerror怎么办_Python IndexError:使用列表作为可迭代对象时...

这是代码&#xff1a;import math as mprimeproduct 5397346292805549782720214077673687806275517530364350655459511599582614290primes [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127…

【Android】配置APK开发环境

【Android】配置APK开发环境1.安装java jdk去oracle公司下载jdk-7u15-windows-i586.exehttp://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260-zhs.html---C:\Documents and Settings\XXXX>java -versionjava version "1.7.0_15"Ja…

C++细节系列(零):零散记录

老规矩&#xff1a;记录细节&#xff0c;等待空余&#xff0c;再进行整理。 1&#xff1a;const,static,const static成员初始化。 1、const成员&#xff1a;只能在构造函数后的初始化列表中初始化 2、static成员&#xff1a;初始化在类外&#xff0c;且不加static修饰。 3、co…

java js highcharts_Highcharts.js -纯javasctipt图表库初体验

一.highcharts简介以及引入highcharts作为免费提供给个人学习、个人网站和非商业用途使用的前端图表演示插件的确使用起来十分方便和轻便。在我最近完成一个需求的时候用到了它&#xff0c; 它的兼容性也很强&#xff0c;其在标准(W3C标准)浏览器中使用SVG技术渲染图形&#xf…

PHP:class const

const变量经常被当做常量用在php的类中&#xff0c;隐含的意思是这个变量是常量&#xff0c;不能被修改。编译器会自动检测&#xff0c;如果被赋值会被提示错误警告。 正确实例1&#xff1a; <?php class test {const ERRNO 100; } echo test::ERRNO."\n"; 输出…

java web核心知识_JAVA web 相关知识点

1&#xff1a; web的三个核心标准&#xff1a;URL&#xff1a; http VS httpsHTTP: 通信协议&#xff0c;客户端&#xff0f;服务器端信息交互方式; 特点是无状态&#xff1b;HTML:2: HTTP 协议&#xff1a;http是通用的&#xff0c;无状态的&#xff0c;面向对象的协议。H…

20135127陶俊杰 实验一

北京电子科技学院(BESTI) 《Java程序设计》课实验报告 班 级&#xff1a;201351 姓名及学号&#xff1a;陶俊杰 20135127 指导教师&#xff1a;娄佳鹏 必修/选修&#xff1a;选修 实验日期&#xff1a; 2015年4月16日 实验时间&…

2014.3.12-C语言小测试

测试代码&#xff1a; 学号:14020491.请实现一个函数&#xff0c;功能为使用循环输出以下的图案void print_alpha(int n) {int i, j;for(i0;i<n;i){for(j0;j<i;j)printf("%c", A j);printf("\n");} }2.请实现一个函数&#xff0c;功能为删除数组指定…

seqlist插入java_大话数据结构(五)(java程序)——顺序存储结构的插入与删除...

获得元素操作对于线性表的顺序存储结构来说&#xff0c;我们要实现getElement操作&#xff0c;即将线性表的第i个位置元素返回即可插入操作插入算法思路&#xff1a;1、如果插入位置不合理&#xff0c;抛出异常2、如果插入表的长度大于等于数组长度&#xff0c;则抛出异常或动态…

142. Linked List Cycle II

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Follow up:Can you solve it without using extra space? Craking interview书上原题&#xff0c;快慢指针&#xff0c;话题较简单说明。 /** * Definition for singly-lin…

无法嵌入互操作类型ESRI.ArcGIS.Carto.MapDocumentClass.请改用适用的接口

在对地图文档进行操作时&#xff0c;居然出现如下问题&#xff1a; IMapDocument m_MapDocument new ESRI.ArcGIS.Carto.MapDocumentClass(); 报错: 无法嵌入互操作类型"ESRI.ArcGIS.Carto.MapDocumentClass".请改用适用的接口. 解决方案如下&#xff1a; 解决方案—…

java文件定时读写_java定时任务及日志的使用

需要引入日志的两个架包&#xff1a;log4j.jar和commons-logging.jarpackage com.lzl;import java.util.TimerTask;import org.apache.log4j.Logger;import com.sun.org.apache.commons.logging.Log;import com.sun.org.apache.commons.logging.LogFactory;public class MyTask…

Google Code Jam 2015 Round 1A Haircut 二分

题意&#xff1a;给你每个理发师的理发时间&#xff0c;问你排在队列中的第N个位置&#xff0c;问你应该被哪个理发师剪发。 解题思路&#xff1a;二分时间&#xff0c;看这个时间到第几个人理发了&#xff0c;然后找到临界值&#xff0c;看这个值的时候有那些理发师接待了新旅…

java编写科赫曲线_matlab绘制peano(皮亚诺)曲线和koch(科赫曲线,雪花曲线)分形曲线...

koch曲线matlab plot函数绘制koch曲线程序&#xff0c;程序还是比较简单的&#xff0c;这里只绘制出了雪花的三分之一function koch_curve(number)%number代表koch的阶数&#xff0c;范围为大于等于2figureset(gcf,position,[0,0,1920,1080]);%设置窗口分辨率&#xff0c;[0,0]…

ajax翻页效果模仿yii框架

ajax翻页效果模仿yii框架 ajax翻页效果&#xff0c;模仿yii框架。 复制代码代码如下:<!DOCTYPE html> <html> <head> <title>ajax分页_www.jbxue.com</title> <script src"http://code.jquery.com/jquery-1.11.0.min.js"></s…

JAVA异常处理、常用类、反射、集合

异常 异常&#xff1a;在Java中是指被一个方法抛出的对象。 分类&#xff1a;检查异常、运行时异常、错误 运行时异常&#xff08;uncheckd&#xff09;&#xff1a;RuntimeException和其子类 检查异常&#xff08;checkd/搜检异常&#xff09;&#xff1a;指Exception和其子类…

Base64 百科词条

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64&#xff0c;所以每6个位元为一个单元&#xff0c;对应某个可打印字符。三个字节有24个位元&#xff0c;对应于4个Base64单元&#xff0c;即3个字节需要用4个可打印字符来表示。它可用来作为电子…