【HAOI2008】圆上的整点
数学题
原题:
平面上有一个圆, 圆心坐标为(0,0),半径为n. 问圆周上有多少个整点. 整点的定义即x,y坐标均为整数的点。
这根本就是一道数学题,注意是数学题,不是数论,数学!
纯粹就看魔性变公式的能力了
一种写法是酱紫的->http://blog.csdn.net/csyzcyj/article/details/10044629
黄学长的博客上也是这个,然而这个有点复杂啊我这么弱不会啊
然后就看到了一个比较简便的,我这种数学撑死了考不过120的弱鸡也能玩出来的方法
(只是看题解推出来,自己想出来这种东西怎么可能做到
直接上公式
x^2+y^2=r^2
x^2=r^2-y^2
=(r+y)(r-y)
设d=gcd(r+y,r-y), r+y=d*U, r-y=d*V
因为y≠0, 所以U≠V
因为d^2*U*V=x^2, 所以可设U=u^2, V=v^2
r+y=d*u^2, r-y=d*v^2
2r=d(u^2+v^2)
显然有gcd(u,v)==1 且 u<v
所以枚举d,再枚举u^2(枚举的时候要保证u是整数),计算出v(同时也要保证v是整数且u<v)
看一下gcd(u,v)是否的等于1即可
再深的证明我也不会了
数学题= =
代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long long
ll gcd(ll x,ll y){ return y?gcd(y,x%y):x;}
ll n; ll n2;
ll ans=;
void cclt(ll x){
ll y=n2/x,j;
for(ll i=;i*i<=y;++i){
j=(int)(sqrt(y-i*i*1.0)+0.5);
if(i>=j) break;
ans+=(j*j==y-i*i & gcd(i,j)==);
}
}
int main(){//freopen("ddd.in","r",stdin);
cin>>n; n2=n<<; ll N=(ll)sqrt(n*2.0);
for(ll i=;i<=N;++i)if(!(n2%i)){
cclt(i);
if(i*i!=n) cclt(n2/i);
}
cout<<ans*+<<endl;
return ;
}
【HAOI2008】圆上的整点的更多相关文章
- BZOJ 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3621 Solved: 1605[Submit][Sta ...
- bzoj 1041: [HAOI2008]圆上的整点 数学
1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...
- bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2027 Solved: 853[Submit][Stat ...
- 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4298 Solved: 1944[Submit][Sta ...
- BZOJ 1041: [HAOI2008]圆上的整点【数论,解方程】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4210 Solved: 1908[Submit][Sta ...
- 【BZOJ1041】[HAOI2008]圆上的整点
[BZOJ1041][HAOI2008]圆上的整点 题面 bzoj 洛谷 题解 不妨设\(x>0,y>0\) \[ x^2+y^2=r^2\\ y^2=(x+r)(x-r) \] 设\(r ...
- bzoj千题计划127:bzoj1041: [HAOI2008]圆上的整点
http://www.lydsy.com/JudgeOnline/problem.php?id=1041 设 X>0 ,Y>0 X^2 + Y^2 = R^2 X^2 = R^2-Y^2 ...
- BZOJ1041 [HAOI2008]圆上的整点 【数学】
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 4631 Solved: 2087 [Submit][S ...
- BZOJ(2) 1041: [HAOI2008]圆上的整点
1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4966 Solved: 2258[Submit][Sta ...
- 2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ π )
2021.12.06 P2508 [HAOI2008]圆上的整点(数论+ \(\pi\) ) https://www.luogu.com.cn/problem/P2508 题意: 求一个给定的圆 \( ...
随机推荐
- bzoj2440
题解: 莫比乌斯反演 ans=sigma(x/(i*i)*miu[i]) 代码: #include<bits/stdc++.h> using namespace std; ; int T, ...
- 如何写java求和源代码
1.设计思想:利用eclipse编写. 2.程序流程图:先建立一个包->建立一个类->写代码->运行->修正错误,完善代码. 3.源程序代码: package dijia; p ...
- CMOS集成门电路
CMOS集成门电路:mos管构成的集成门电路 CMOS:互补对称金属氧化物半导体器件 CMOS反相器电路是由N沟道MOSFET和P沟道MOSFET互补而成:特点静态功耗近视为0,电源电压可在很宽的范围 ...
- NIO完成网络通信(一)
NIO:即非阻塞式IO 视频教程: https://chuanke.baidu.com/v1982732-211322-1316084.html 使用步骤: 1.创建 ServerSocketCha ...
- IDEA使用GitHub托管代码
该方法基本也适用于JetBrains公司的其他IDE产品,如phpStorm,PyCharm等. 首先,在github官网注册一个账号,参考:http://stormzhang.com/github/ ...
- 控制台程序读取WIKI形式的TXT文件并一表格的形式显示在Word中
'Imports System.Collections.Generic 'Imports System.Text 'Imports System.IO 'Imports office = Micros ...
- :组合模式:Component
#ifndef __COMPONENT_H__ #define __COMPONENT_H__ #include <iostream> #include <vector> us ...
- ajax之同步异步详解
同步:一堆任务,按顺序去执行,只能一件件的来,如一个厨师做菜 异步:一堆任务,可以同时进行,如多个厨师做菜 ...
- Android开发---网格布局案例
Android开发---网格布局案例 效果图: 1.MainActivity.java package com.example.android_activity; import android.ap ...
- day55 jQuery 练习
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...