Sol

数学.

跟圆上的整点一样...TA写了个积性函数的算法...以后再说吧...

\(x^2+3y^2=r^2\)

\(3y^2=r^2-x^2\)

\(3y^2=(r-x)(r+x)\)

\(y^2=\frac{1}{3}(r-x)(r+x)\)

\(d=(r-x)(r+x)\)

\(r-x=3du^2,r+x=dv^2\) 这里 \(r-x\) 和 \(r+x\) 并没有什么区别.

\(2r=d(3u^2+v^2)\)

枚举 \(d\) 和 \(u\)

感觉复杂度是\(O(n^{\frac{3}{4}})\)

但是可以跑最大数据的说.

Code

/**************************************************************
Problem: 4544
User: BeiYu
Language: C++
Result: Accepted
Time:8568 ms
Memory:1300 kb
****************************************************************/ #include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>
#include<utility>
#include<iostream>
using namespace std; typedef long long LL;
#define debug(a) cout<<#a<<"="<<a<<" "
#define mpr(a,b) make_pair(a,b) LL T,r,n,ans; inline LL in(LL x=0,char ch=getchar()){ while(ch>'9'||ch<'0') ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x; } vector<pair<LL,LL> > p; LL calc(LL d){
LL res=0,m=n/d;
// cout<<"*************"<<endl;
// debug(m),debug(d);cout<<endl;
for(LL u=1,v;u*u*3<=m;u++){
v=sqrt(m-3*u*u+0.5);
// debug(u),debug(v),debug(3*v*v+u*u),cout<<endl;
// if(u>v) break;
if(v*v+u*u*3==m&&__gcd(v*v,u*u*3)==1) res++;
// cout<<"get!",debug(d*u*u*3),debug(d*v*v),debug(d*u*u*3+d*v*v)<<endl;
// p.push_back(mpr(d*u*u*3,d*v*v));
}return res;
}
int main(){
// freopen("in.in","r",stdin);
for(T=in();T--;){
r=in(),n=r<<1,ans=0;
for(LL d=1;d*d<=n;d++) if(n%d==0){
if(d*d==n) ans+=calc(d);
else ans+=calc(d)+calc(n/d);
}
cout<<ans*4+2<<endl;
// sort(p.begin(),p.end());
// for(int i=0;i<p.size();i++) cout<<p[i].first<<" "<<p[i].second<<endl;
}
return 0;
}

  

BZOJ 4544: 椭圆上的整点的更多相关文章

  1. BZOJ 1041 圆上的整点

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1041 题意:求圆x^2+y^2=r^2上的整点. 思路:由于对称性,我们只需要计算第一象 ...

  2. [BZOJ]1045 圆上的整点(HAOI2008)

    数学题第二弹! Description 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. Input 一个正整数r. Output 整点个数. Sample Input 4 ...

  3. bzoj 1041 圆上的整点 分类: Brush Mode 2014-11-11 20:15 80人阅读 评论(0) 收藏

    这里先只考虑x,y都大于0的情况 如果x^2+y^2=r^2,则(r-x)(r+x)=y*y 令d=gcd(r-x,r+x),r-x=d*u^2,r+x=d*v^2,显然有gcd(u,v)=1且u&l ...

  4. BZOJ 1041 圆上的整点 数学

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1041 题目大意:求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整 ...

  5. BZOJ4544 椭圆上的整点(数论)

    https://www.cnblogs.com/Gloid/p/9538413.html 基本思路没有太大差别.得到2n=d(a2+3b2),其中d=gcd(n-x,n+x),n-x==a2& ...

  6. bzoj4544 椭圆上的整点

    我会所有推理..... Q1:真的这么暴力的统计答案? Q2:蜜汁统计答案.... Q3:为什么不考虑3在不同的位置的情况

  7. BZOJ 1041: [HAOI2008]圆上的整点

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3621  Solved: 1605[Submit][Sta ...

  8. bzoj 1041: [HAOI2008]圆上的整点 数学

    1041: [HAOI2008]圆上的整点 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  9. bzoj 1041: [HAOI2008]圆上的整点 本原勾股數組

    1041: [HAOI2008]圆上的整点 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2027  Solved: 853[Submit][Stat ...

随机推荐

  1. vim的使用

    vim的定位 home:光标移到行首 end:光标移到行尾 pageup:屏幕上翻页 pagedow:屏幕下翻页 shift+g:定位行  如转至10行   10shift+g shift+gg 转至 ...

  2. js数组特定位置元素置空,非null和undefined,实现echarts现状图效果;谷歌格式化压缩js代码

    一.想要实现eCharts线状图表的断点效果,如图(后来又查到数据格式为data:['-', 2, 3,'-' , 5, 6, 7]:也可以断点显示) 这种效果,在设置数据的时候应该是这样: data ...

  3. Java排序算法——插入排序

    import java.util.Arrays; //================================================= // File Name : Select_S ...

  4. Android学习笔记——CheckBox

    该工程的功能实现在一个activity中显示一个单选框和一个多选框 以下代码是MainActivity.java文件中的代码 package com.example.checkbox; import ...

  5. 扩展服务 修改新增Service的默认主题

    问题描述:想要在F:\PHPnow-1.5.6\htdocs\yt\Yourphp\Tpl\      目录下新增一个Service\Default(A)   和Service\new(B) 两个主题 ...

  6. phpcms使用细节

    1.在模板中使用php语句 <?php for ($i=0; $i < 10; $i++) {     echo $i."#######<br>"; }?& ...

  7. java在继承中父类的成员变量是否会被子类所覆盖

    假如 父类 int num =7:子类 int num =9:父类是否会被子类所覆盖? 给你看两个例子: 第一个例子: 第二个例子: 这两个例子的区别只有一句话   由此证明了子类从父类继承的时候   ...

  8. 解决redhat的未注册问题

    昨天安装第五步的时候:开始是没有网,,,居然ping不通  网  ,服务器也ping不通,,,,,可能和我前几天删除了网络适配器有关,,把linux桥接对应的适配器给删了,,, 解决办法是打开虚拟网络 ...

  9. linux下使用yum安装mysql

    1. 安装mysql 服务器端:           yum install mysql-server             yum install mysql-devel 2. 安装mysql客户 ...

  10. linux如何隐藏和显示所有窗口?

    centos7 基本上就跟fedora23是一样的了, 也许它们使用的内和是一样的, fedora23使用的是4.2.3, 所以使用fedora对使用centos和redhat是有优势和好处福利的. ...