【xsy1116】数学题 奥数题
真实奥数题
题目大意:给你正整数k$,r$。问你存在多少对$(x,y)$,满足$x<y$且$x^2+y^2=kz^2$,并将所有符合条件的数对输出。
数据范围:$r≤1e9$,$k={1,2,3}$。
我们先考虑$k=1$的情况,显然就是一个求勾股数对数的问。有一种经典的枚举所有$x^2+y^2=z^2$且$(x,y,z)=1$的勾股数对数的式子:
$\begin{cases} x=2nm\\ y=n^2-m^2 \\ z=n^2+m^2 \end{cases}$
证明的话,展开下式子算算就好
我们只需要暴力枚举r的因数进行计算就可以了,时间复杂度$O(r^{\frac{1.066}{\ln\ln\ n}+0.5})$(这个式子是抄来的,证明本蒟蒻不懂,反正是能过的qwq)。
考虑$k=2$的情况,我们参考处理$k=1$的情况,列一组式子,可以枚举所有$x^2+y^2=2z^2$且$(x,y,z)=1$的式子:
$\begin{cases} x=n-m\\ y=n+m \\ z=\sqrt{n^2+m^2} \end{cases}$
证明同上
我们不难发现,这时候求解的关键变为了求$z^2=n^2+m^2$的对数(并将所有方案打出),这不就是第一问吗$qwq$。
我们只需要求出所有的$(n,m)$数对后,简单转化一波就可以了。
考虑k=3的情况,抱歉这个是无解的qwq
#include<bits/stdc++.h>
#define L long long
#define M 10000005
using namespace std; pair<L,L> p[M]; int cnt=; int solve(L z,L bei){
int res=;
for(L n=;n*n<=z;n++){
L m=sqrt(z-n*n),x=,y=;
if(m*m+n*n!=z) continue;
x=*n*m;
y=n*n-m*m;
if(x==y) continue;
if(x>y) swap(x,y);
if(x<=) continue;
p[++cnt]=make_pair(x*bei,y*bei);
res++;
}
return res;
} int main(){
int cas; cin>>cas;
while(cas--){
L k,z,ans=; cin>>k>>z; cnt=;
if(k==) {printf("0\n"); continue;}
for(L i=;i*i<=z;i++) if(z%i==){
ans+=solve(i,z/i);
if(i*i!=z) ans+=solve(z/i,i);
}
sort(p+,p+cnt+);
cnt=unique(p+,p+cnt+)-p-;
if(k==){
for(int i=;i<=cnt;i++){
p[i]=make_pair(p[i].second-p[i].first,p[i].second+p[i].first);
}
sort(p+,p+cnt+);
cnt=unique(p+,p+cnt+)-p-;
}
printf("%d\n",cnt);
for(int i=;i<=cnt;i++) printf("%d %d\n",p[i].first,p[i].second); }
}
【xsy1116】数学题 奥数题的更多相关文章
- python基础===一道小学奥数题的解法
今早在博客园和大家分享了一道昨晚微博中看到的小学奥数题,后来有朋友给出了答案.然后我尝试用python解答它. 原题是这样的: 数学题:好事好 + 要做好 = 要做好事,求 “好.事.做.要”的值分别 ...
- 一个hin秀的小学三年级奥数题 [hin秀]
~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题 [hin秀] 题目: 给出一个无限大的棋盘 n×n (n>0 , 是 ...
- 【GDKOI2017】 两个胖子萌萌哒 小学奥数题
题目大意:给你一个$n\times m$的网格,你要在这个网格上画三角形. 三角形的顶点只能在网格的整点上,且至少有一条边平行于$x$或$y$轴,且三角形面积为整数.问你能画多少个不同的三角形. 两个 ...
- luogu 1258 小车问题 小学奥数(?)
题目链接 题意 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能使两人尽快同时到 ...
- 「浙江理工大学ACM入队200题系列」问题 J: 零基础学C/C++83——宁宁的奥数路
本题是浙江理工大学ACM入队200题第八套中的J题 我们先来看一下这题的题面. 题面 题目描述 宁宁参加奥数班,他遇到的第一个问题是这样的:口口口+口口口=口口口,宁宁需要将1~9 九个数分别填进对应 ...
- 鬼知道NOI会不会成为下一个奥数
认真写作文不可能的,这辈子不可能认真写作文的. (月考,期末考,高考即将到达战场,真香警告) 以下应该成为原稿!!! 真.喜欢写感悟,但我感觉我可能把它写的有点商业化,商业化的文章不可能放的,所以我尽 ...
- 《孙子算经》之"物不知数"题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
- Contest 高数题 樹的點分治 樹形DP
高数题 HJA最近在刷高数题,他遇到了这样一道高数题.这道高数题里面有一棵N个点的树,树上每个点有点权,每条边有颜色.一条路径的权值是这条路径上所有点的点权和,一条合法的路径需要满足该路径上任意相邻的 ...
- [CSP-S模拟测试]:方程的解(小学奥数)
题目描述 给出一个二元一次方程$ax+by=c$,其中$x$.$y$是未知数,求它的正整数解的数量. 输入格式 第一行一个整数$T$,表示有$T$组数据.接下来$T$行,每行$3$个整数$a$.$b$ ...
随机推荐
- 前端之css笔记3
一 display属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 2018.09.21 atcoder An Invisible Hand(贪心)
传送门 简单贪心啊. 这题显然跟t并没有关系,取差量最大的几组买入卖出就行了. 于是我们统计一下有几组差量是最大的就行了. 代码: #include<bits/stdc++.h> #def ...
- 33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距
33. Pay Gap for the Brightest Female Graduatea 最聪明的大学女毕业生面临的工资差距 ① When young women were found to ma ...
- java socket 之UDP编程
一.概念 在TCP的所有操作中都必须建立可靠的连接,这样一来肯定会浪费大量的系统性能,为了减少这种开销,在网络中又提供了另外的一种传输协议——UDP,不可靠的连接(这种协议在各种聊天工具中被广泛使用) ...
- Quartus调用MOdelsim仿真过程
quarutsii调用modelsim实际是相对比较简单的.因为不需要选择要编译的库. 调用前的设置:设置调用的工具,也就是下面的Tool name,选择仿真语言,在这里选择为Verilog HDL, ...
- 几个经典的数学库之一学习---VCGlib(3)
Camera and shot abstraction for managing views 视图的定义,以及mesh的操作说明. Shot(镜头) and camera(相机) shot摄像结构以及 ...
- spring boot搭建Hello Word
一.安装与配置jdk 二.安装与配置maven 安装好maven,必须配置环境变量 通过cmd命令查询maven是否安装成功,以下是安装成功的界面 修改setting.xml的配置,制定本地仓库的路径 ...
- Android-AndroidManifest.xml默认启动的Activity(探索篇01)
AndroidManifest.xml-->默认启动 MusicBrowserActivity <activity android:name=".MusicBrowserAct ...
- Jersey服务端
问世间情为何物,直叫人一声呵呵. 上个项目写的jersey restful服务端,怎么都是正确的,没什么问题.结果这个项目写了,呵呵了,真的呵呵了,怎么搞都有问题. 总是报错,对json的类型报错,无 ...
- spring获取webapplicationcontext,applicationcontext几种方法详解(转)
方法一:在初始化时保存ApplicationContext对象 代码: ApplicationContext ac = new FileSystemXmlApplicationContext(&quo ...