龚老师带你玩转编程世界!《mini_program》经典且简单的例题。通过简单的例题来巩固拓展编程知识。
一、背景
一、完全平方数
有一个十万内的整数,它加上100后是一个完全平方数,加上168后又是一个完全平方数,请问该数是多少?【完全平方指一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。】(龚老师提示:照顾小学知识点未知的情况,点名:平方)
二、解法分析
设计到数学概念的题目往往会一瞬间失神,题目说的是个什么东西?这种题目就是谁怕谁的事儿,你被吓住了你就输了,当然你没怂的话,你就发现了题目关键:平方。
题目的意思其实是,一个数加上100能开平方,加上168仍旧能开平方。开平方的函数我们记得,是sqrt()函数。只要能被sqrt成为整数,那么就是个对的值。如果某个数开平方的结果相乘,答案还是那个数,这个数就是平方数。【照顾小学群体,就像减法,大蛋糕切开来,如果被切过的小蛋糕拼起来是大蛋糕,说明这块蛋糕是“完全平方数”。】
仍旧用我们穷举法,把所有的数字给罗列一遍。既然是十万内,那么我就循环十万次来找答案!判断条件需要我们加工一下,首先把加上100的开方结果和加上168的开方结果算出来,然后判断得到的两个结果是否是对的值。
三、代码及输出
c++版本:
pascal 版本:
四、要点回顾
本题利用到的编程知识点其实不难,运用了穷举思想的循环,并在每次循环时对循环变量进行加工,判断是否满足所找的数要求。循环+判断!
这里运用了一个数学函数——sqrt(),计算机智能的帮我们把数开了平方,【把大蛋糕切开了】,因此在c++中,需要额外的外部库,需要提起通知计算机把math.h这个头文件包括进来,因为sqrt在math.h里呀!
额外的,需要注意因为数字到了十万这个级别,你确保数字的取值范围没有问题吗?所以,c++中,我们运用了long int这个长整数类型来规避超过范围。但在pascal中,long int不能满足题目,因为sqrt的结果可能存在小数,我们需要匹配上准确的范围,因此用了x,y实数类型变量,real。
六、最后
多思考,多动手。闭上眼睛想一想本题运用到的知识点,循环-->判断-->关系运算符&&逻辑运算符。
重要的是,碰到不熟悉的内容可千万别怂哦!
你学会了吗?
领取专属 10元无门槛券
私享最新 技术干货