真实奥数题

题目大意:给你正整数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. python函数、装饰器、迭代器、生成器

    目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递 ...

  2. ubuntu 'yuan' update

    #  tsinghua  university deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiv ...

  3. 2018.09.11 poj2976Dropping tests(01分数规划)

    传送门 01分数规划板子题啊. 就是简单变形移项就行了. 显然 ∑i=1na[i]∑i=1nb[i]≤k" role="presentation" style=" ...

  4. k8s的port、targetport、nodeport之间的区别

    先看举例: k8s集群中跑着一个tomcat服务,tomcat容器expose的端口为8080 apiVersion: v1 kind: Service metadata: name: tomcat- ...

  5. Netty学习第五节实例进一步学习

    概念理解: Netty是基于NIO的框架  传统IO与NIO的区别:       1.传统IO会造成阻塞点:       2.单一的客户端处理消息 解决阻塞问题:建立线程池,达到收到一个消息就建立一个 ...

  6. linxu ssh 双端认证 不成功之authorized_keys

    linxu ssh 双端认证 不成功之authorized_keys liunx双端认证可以让我们更简便的在两台服务器之间传输文件,配置暂且不说,网上有大部分的文章可以搜索到,今天我要说的是在不成功的 ...

  7. (转) MVC 中 @help 用法

    ASP.NET MVC 3支持一项名为“Razor”的新视图引擎选项(除了继续支持/加强现有的.aspx视图引擎外).当编写一个视图模板时,Razor将所需的字符和击键数减少到最小,并保证一个快速.通 ...

  8. Billman_ford货币升值——正权回路

    2240和1860那个题目很像啊 都是问货币能不能增多,钻社会制度得空子啊哈哈 唯一不同得是你的起点是任意一个点,这个比较麻烦了,多了一层循环嘞 处理货币名可以用map分配id 然后就是老套的Bill ...

  9. bootstrap modal

    模态框提供了两个可选尺寸,通过为 .modal-dialog 增加一个样式调整类实现.加modal-lg,加modal-sm,不加也可以,共有三种尺寸. 触发方式,data-target, 感觉比js ...

  10. 设计模式之复合模式(Compound Pattern)

    一.什么是复合模式? 在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义: 将多个模式结合起来形成一个“框架”,以解决一般性问题 一提到“框架”,可能最容易联想到的 ...