真实奥数题

题目大意:给你正整数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】数学题 奥数题的更多相关文章

  1. python基础===一道小学奥数题的解法

    今早在博客园和大家分享了一道昨晚微博中看到的小学奥数题,后来有朋友给出了答案.然后我尝试用python解答它. 原题是这样的: 数学题:好事好 + 要做好 = 要做好事,求 “好.事.做.要”的值分别 ...

  2. 一个hin秀的小学三年级奥数题 [hin秀]

    ~~~~~~不知为何总会被小学的题虐哭QAQ,真的秀啊,毒害广大小朋友~~~~~~ 一个hin秀的小学三年级奥数题    [hin秀] 题目: 给出一个无限大的棋盘  n×n  (n>0 , 是 ...

  3. 【GDKOI2017】 两个胖子萌萌哒 小学奥数题

    题目大意:给你一个$n\times m$的网格,你要在这个网格上画三角形. 三角形的顶点只能在网格的整点上,且至少有一条边平行于$x$或$y$轴,且三角形面积为整数.问你能画多少个不同的三角形. 两个 ...

  4. luogu 1258 小车问题 小学奥数(?)

    题目链接 题意 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能使两人尽快同时到 ...

  5. 「浙江理工大学ACM入队200题系列」问题 J: 零基础学C/C++83——宁宁的奥数路

    本题是浙江理工大学ACM入队200题第八套中的J题 我们先来看一下这题的题面. 题面 题目描述 宁宁参加奥数班,他遇到的第一个问题是这样的:口口口+口口口=口口口,宁宁需要将1~9 九个数分别填进对应 ...

  6. 鬼知道NOI会不会成为下一个奥数

    认真写作文不可能的,这辈子不可能认真写作文的. (月考,期末考,高考即将到达战场,真香警告) 以下应该成为原稿!!! 真.喜欢写感悟,但我感觉我可能把它写的有点商业化,商业化的文章不可能放的,所以我尽 ...

  7. 《孙子算经》之"物不知数"题:中国剩余定理

    1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数.  如果 m ...

  8. Contest 高数题 樹的點分治 樹形DP

    高数题 HJA最近在刷高数题,他遇到了这样一道高数题.这道高数题里面有一棵N个点的树,树上每个点有点权,每条边有颜色.一条路径的权值是这条路径上所有点的点权和,一条合法的路径需要满足该路径上任意相邻的 ...

  9. [CSP-S模拟测试]:方程的解(小学奥数)

    题目描述 给出一个二元一次方程$ax+by=c$,其中$x$.$y$是未知数,求它的正整数解的数量. 输入格式 第一行一个整数$T$,表示有$T$组数据.接下来$T$行,每行$3$个整数$a$.$b$ ...

随机推荐

  1. 编译 link

    --generating dsym file change the appropriate one from 'DWARF with dSYM file' to just 'DWARF',This s ...

  2. chrome审查元素功能,web开发强大帮手

    怎样打开Chrome的开发者工具? 你可以直接在页面上点击右键,然后选择审查元素: 或者在Chrome的工具中找到: 或者,你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shif ...

  3. Django入门与实践-第16章:用户登录(完结)

    # myproject/settings.py LOGIN_REDIRECT_URL = 'home' EMAIL_BACKEND = 'django.core.mail.backends.conso ...

  4. UVa 11292 Dragon of Loowater (水题,排序)

    题意:有n个条龙,在雇佣勇士去杀,每个勇士能力值为x,只能杀死头的直径y小于或等于自己能力值的龙,只能被雇佣一次,并且你要给x赏金,求最少的赏金. 析:很简单么,很明显,能力值高的杀直径大的,低的杀直 ...

  5. modelsim仿真基本流程

    好久没再用过modelsim,都忘的一干二净了.刚换了份工作,又要重新拾起来,不过现在感觉modelsim的仿真其实是比较快的,很有用处.再者这么长时间老是学了忘,忘了再学,觉得真浪费时间,平时确实应 ...

  6. ArcGIS Desktop Python add-ins 共享和安装插件

    1)   共享和安装插件 共享Python插件的关键是.esriaddin文件;为了获取该插件功能,其他用户只要在本机执行安装操作或通过网络引用该插件就可以. ArcGIS插件安装工具 当用户双击一个 ...

  7. 从hbase到hive,以及sqoop转到mysql解析

    https://blog.csdn.net/qq_33689414/article/details/80328665 hive关联hbase的配置文件 hive和hbase同步https://cwik ...

  8. hdu 5014 异或序列

    http://acm.hdu.edu.cn/showproblem.php?pid=5014 从最大的一个数开始找能配对使他们的异或值最大的一个数 最后输出 #include <cstdio&g ...

  9. 【lazy标记得思想】HDU3635 详细学习并查集

    部分内容摘自以下大佬的博客,感谢他们! http://blog.csdn.net/dm_vincent/article/details/7769159 http://blog.csdn.net/dm_ ...

  10. Android-Android/APP-理解

    Android 1.Google Android 给出的官方Android架构图就是大家都知道的四层,第一层是应用层(就是很多能够看得到的应用),第二层是应用框架层(为application提 供各种 ...