当前位置: 首页 > news >正文

D. Pythagorean Triples 题解

思路

由勾股定理和题目中的要求对应的两个方程可以得到一个等式:

c方-b方 = c + b

在题目要求下可以知道 c = b+1

拿这个式子去打表,找符合这个式子的直角三角形

import math
for i in range(1,1001):a = ib = i+1a = a*ab = b*bc = b-ad = math.sqrt(c)d = int(d)if d*d == c:print(f"{d} {i} {i+1}")
# 3 4 5
# 5 12 13
# 7 24 25
# 9 40 41
# 11 60 61
# 13 84 85
# 15 112 113
# 17 144 145
# 19 180 181
# 21 220 221
# 23 264 265
# 25 312 313
# 27 364 365
# 29 420 421
# 31 480 481
# 33 544 545
# 35 612 613
# 37 684 685
# 39 760 761
# 41 840 841
# 43 924 925

从打表结果可以发现,符合要求的三角形满足:

1、a是奇数,且除了1以外的每个正奇数都有对应的符合要求的直角三角形

2、c = b+1

3、b = (a*a-1)/2

因为题目中是求1-n范围中有多少个符合要求的三角形,所以从n开始倒着找,找到的第一个符合要求的三角形的  a/2  即为答案

AC代码 

为什么从python变成c艹了,因为用python交了超时

#include<bits/stdc++.h>
using namespace std;#define int long longint n,t,z,m;void solve(){cin>>n;if(n<5){cout<<0<<'\n';return ;}for(int i=n;i>0;--i){z = (i-1)*2+1;t = sqrt(z);if(t*t==z && t&1){cout<<(t>>1)<<'\n';return ;}}
}signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int _=1;cin>>_;while(_--){solve();}    return 0;
}

相关文章:

  • Vuex使用指南:状态管理
  • JavaWeb:MySQL基础
  • shell(9)
  • ts学习(1)
  • Linux的时间同步
  • 湖北理元理律师事务所:规模化债事服务的探索与实践
  • 偷钱包行为检测数据集VOC+YOLO格式922张1类别有增强
  • 嵌入式模数转换原理与程序设计
  • 3小时超快速入门Python
  • Java IO流分类与记忆方法
  • AfuseKt2.4.2 | 支持阿里云盘、Alist等平台视频播放,具备自动海报墙刮削功能的强大播放器
  • ctfshow——web入门361~368
  • ADK 第四篇 Runner 执行器
  • 深入理解C语言中的内存区域:堆、栈与变量存储空间详解
  • WEB表单和表格标签综合案例
  • Linux安装RTL8215网卡驱动
  • 走出 Demo,走向现实:DeepSeek-VL 的多模态工程路线图
  • 睡岗检测数据集VOC+YOLO格式1198张1类别
  • 【神经网络与深度学习】深度学习中的生成模型简介
  • 利用WPS创建的Templates目录,快捷生成md文件
  • 南方地区强降雨或致部分河流发生超警洪水,水利部部署防范
  • 新质观察|“模速空间”如何成为“模范空间”
  • 中国首位、亚洲首位!赵心童夺得斯诺克世锦赛冠军
  • 日本儿童人数已连续44年减少,少子化问题越发严重
  • 国内外数十支搜救犬队伍齐聚三明,进行废墟搜救等实战
  • 中央气象台:未来三天北方地区有大风沙尘,江南等地有强降水