题二:1079 三角形

Description

著名的数学家毕达哥拉斯可能从来都不曾想过有人居然会问他这样的一个问题:给出一个整数,存在多少个直角三角形,
它的某一条边的长度等于这个整数,而且其他边的长度也是整数。既然毕达哥拉斯不可能预见到有计算机的出现,
如果他回答不出来,那谁又能责怪他呢?但是现在既然你有了计算机,那么回答不出来就说不过去了。

输入格式

第一行有一个整数n,代表有多少个数据(1<=n<=20)。接下来有n行,每行代表一个数据。一个数据就是一个整数ai(a<=i<=n,1<=ai<=100)。

输出格式

每个数据都必须有相应的输出。两个数据的输出之间有一个空行。
对于每一个数据,如果找不到解,则输出一个空行。如果找到解,就把符合条件的所有直角三角形输出。每个三角形占一行,输出该三角形的另外两条边,
必须先输出长边,然后一个逗号,再输出短边。两个三角形之间不能有空行,而且必须按照长边降序排列。

输入样例

2
20
12

输出样例

101,99
52,48
29,21
25,15
16,1237,35
20,16
15,9
13,5

思路:

显然这是一个暴力枚举的问题,对于枚举而言,私以为大原则有一,关键有三。

大原则,简化问题,简化时间复杂度。

关键一:确定枚举对象

关键二:确定枚举范围

关键三:确定枚举条件,限制条件

最后再处理枚举过程中的细节问题,比如,乘法溢出问题,除法中的数据丢失问题,等等。

对于本题而言,显然,对于每个ai有两种情况,ai为长边,ai为短边。

那么枚举对象可以分为两种,ai为长边时,b^2+c^2=a^2.

我们以b为枚举对象,接下来就确定枚举范围。

显然我们可以让b从[1,a-1]枚举。对于每个b,依据sqrt(a^2-b^2)=c,计算出一个c,那么剩下的就是依据题目的限制条件判断c的合法性了。

1.c需要为整数,由于是开根问题,结果c强转整数为会导致数据的丢失,我们需要再判断计算出来的c是否本身就是一个整数,只需要把推导过程再计算即可a^2+b^2?c^2.

2.结果不可以重复,我们只需判断c>b,即可。

3.结果降序, 那么我们就需要先枚举以a为短边的情况,再枚举a为长边的情况。

然后对于每种情况的枚举,我们把范围倒置,如[1,a-1]->[a-1,1],先把大的结果枚举出来。

最后对于每个枚举结果b,c,先输出较大那个即可。

同理,对于a为短边,也是同样分析,但是确定枚举范围需要一些技巧。

利用数学方法,在直角三角形中,c=a/sin(a,c);

我们取sin0.1,加上计算器,易得c<=575*a.所以枚举范围(a,575*a];

综上,我们很容易实现代码:

#include<iostream>
using namespace std;
#include<set>
#include<math.h>
#include<algorithm>
int main() {ios::sync_with_stdio(false);int N = 0;cin >> N;for (int i = 0; i < N;i++) { int x = 0;cin >> x;bool flag = false;//x短for (int a = 575 * x; a > x; a--) {int t = (int)sqrt(a * a - x * x);if (t * t+x*x == a*a&&a>t) { cout << max(a, t) << "," << min(a, t) << endl; flag = true; }}//x为长边for (int a = x-1; a > 0; a--) {int t = (int)sqrt(x * x - a * a);if (t* t + a * a ==x * x  && a > t) { cout << max(t, a) << "," << min(t, a) << endl; flag = true; }}if (!flag) { cout << endl; }cout << endl;}}

SCAU 计算智能 暴力美学(二)相关推荐

  1. AI“暴力美学”背后,预训练模型如何乘风破浪?

    作者 | 张俊林 来源 | 深度学习前沿笔记专栏 Bert模型自18年10月推出,到目前为止快两年了.它卜一问世即引起轰动,之后,各种改进版本的预训练模型(Pre-Training Model, PT ...

  2. 堪称暴力美学的可视化大屏是怎么做的?附无代码硬核教程

    前些日子在和别人交流的过程中发现,现在市场变化太快,不仅用Excel做报表已经落后了,就连最后的数据都要以美观.直接.酷炫的方式展现出来. 那到底怎样呈现数据才是你们所说的美观酷炫,能让人赏心悦目?通 ...

  3. 对话出门问问李志飞:GPT-3 是「暴力美学」的一次胜利

    一项在科学家眼中超越 AlphaGo 的技术突破,让人类真切看到了通用语言智能的希望. 今年 6 月,特斯拉创始人 Elon Musk 创立的非盈利性 AI 科研机构 OpenAI 发布了一个名为 G ...

  4. “暴力美学1”——DFS深度优先搜索

    作为新时代青年,"暴力"二字似乎离我们十分遥远,大多数时候我们只能够在电影或者电视剧上接触这个概念 暴力二字或许是个贬义词,但若是我们在后面加上美学二字,或许就是一个值得推敲的词汇 ...

  5. 什么样的代码最能代表程序员的暴力美学?

    前言: 昨天和朋友在吃晚餐时候,聊了一会高并发的事情,后面越扯越远,扯到什么代码最能代表程序员的暴力美学,所以昨天吃完饭我就在上网上疯狂找这一块的资料,在结合自己所看到的,下定决心发这一篇文章,来刷新 ...

  6. 图论之Floyd,多源图最短路如何暴力美学?

    一.前言 在之前的图论算法中有说过基本都是从一个原点出发,然后定义其他点到原点的一个距离最小值.那假设这个原点都是不固定的,而题目刚好要求去求任意两个点之间的最小距离的话,那么这个时候暴力美学就非常凸 ...

  7. 华为「硬」生生把AI搞出暴力美学

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 「华为速度」,在AI计算领域到底该如何评价? 一言以蔽之:暴力美学. 而且这种速度,由浅及深地拆分来看,可以分为两层. 首先,是物理意义上的 ...

  8. 恐怖与暴力美学 + 妖魔化:《人皮客栈》观看笔记

    <人皮客栈>(HOSTEL)是最近非常受碟友推崇的恐怖电影.片首字幕更有向昆丁·塔伦蒂诺致敬的字样,证明它是个血腥暴力惊悚的限制级电影. 自从<惊声尖叫><去年夏天你干了 ...

  9. GTP-3算法是一种“暴力美学”的胜利

    2016 年,AlphaGo 可以说确立了 AI 的"围棋霸权".但人工智能专家李志飞却说,"AlphaGo 更多是对人类心智的冲击".在过去 5 年里,他认为 ...

最新文章

  1. 敏捷开发签名人建议开发者放弃“敏捷”
  2. Jmeter之控制线程执行到某个结果时退出执行(第二种解决方案)
  3. oracle rac应急_ORACLE紧急情况检查应急预案
  4. php 7 pcntl扩展,PHP_Linux系统中为php添加pcntl扩展,pcntl扩展可以支持php的多线程 - phpStudy...
  5. java多核并行计算_谈谈Java任务的并行处理
  6. LeetCode 803. 打砖块(并查集)
  7. 小米又给员工发福利了! 逾3亿港元457人分
  8. Web Audio API
  9. Swift3.0P1 语法指南——枚举
  10. Linux命令之nl
  11. 图像融合(一)--概述
  12. 流水灯c语言代码大全,单片机闪烁灯流水灯汇编代码大全
  13. 原型设计之Axure RP
  14. 关掉计算机usb接口,bios中不小心把电脑的USB接口给关闭了,怎么样开启
  15. 用Tupper自我指涉公式造图
  16. java金额小数位,java 数字转大写金额,小数部分太简单略
  17. 英语语法汇总(3.代词)
  18. XMail 安装配置使用
  19. 算法:使用单词表拼接字符串的方法数
  20. 基于SSM的演唱会网上订票系统

热门文章

  1. 【Python】You are using pip version 9.0.1, however version 23.0.1 is available.
  2. windows编程之TextOut与DrawText -- 文本输出实验
  3. MFC中 dc.DrawText()与dc.TextOut()从功能上讲有什么区别?
  4. PointNEXT阅读:重铸PointNet荣光
  5. 枪毙病狗问题(看帽子问题类型)
  6. cmder win10 安装配置
  7. 国学的天空-傅佩荣有声系列3
  8. OSChina 娱乐弹弹弹——程序猿专属幽默
  9. SpringCloud微服务架构
  10. 北京BigData好程序员京东云共建北京首期开班