题目描述:输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。

分支和循环结合在一起时功能强大:

下面列举所有可能的结果aabb,然后判断它们是否为完全平方数。注意a的范围是1~9,但b可以是0.

  for(int a=;a<=;a++)
for(int b=;b<=;b++)
If(aabb是完全平方数)
printf(“%d\n”,aabb);

上面的程序并不完整——“aabb是完全平方数”是中文描述,而不是合法的C语言表达式,而aabb在C语言中也是另外一个变量,而不是把两个数字a和b拼在一起。这个把这样“不是真正程序”的“代码”成为伪代码(pseudocode)。虽然有一些正规的伪代码的定义,但在实际应用中,并不需要太拘泥于为代码的格式。主要的目标是描述算法梗概,避开细节,启发思路。

写出伪代码之后,我们需要考虑如何把它变成真正的代码。上面的伪代码有两个“非法”的地方;完全平方数判定,以及aabb这个变量。后者相对比较容易;用另外一个变量n=a×1100+b×11存储即可。

接下来的问题就要困难一些了:如何判断n是否为完全平方数?

方法一:PS(floor(x),也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数)

可不可以这样写?If(sqrt(n)==floor(sqrt(n))) printf(“%d\n”,n);即直接判断sqrt(n)是否为整数。理论上当然没问题,但这样写不保险,因为浮点数的运算(和函数)有可能存在误差。假设在经过大量计算后,由于误差的影响,整数1变成了0.99999999,floor的结果会是0而不是1,。为了减少误差的影响,一般改成四舍五入,即floor(x+0.5)。如果难以理解,可以想象在数轴上把一个单位区间左移0.5个单元的距离。

Floor(x)等于1的区间为【1,2】,而floor(x+0.5)等于1的区间为【0.5,1.5】.

  浮点运算可能存在误差。再进行浮点运算比较时,应考虑到浮点误差。

  总结:小数部分为0.5的数也会受到浮点误差的影响,因此任何一道严密的算法竞赛题目都需要想办法解决这个问题

另一思路是枚举平方根x,从而避免开方操作。

#include<stdio.h>
int main()
{
for(int x=;;x++) //for循环没有指定循环条件 如果期待你从32开始可以不用判断1000
{
int n=x*x;
    if(n<1000) continue;
if(n>) break;
int high=n/;
int low=n%;
if(high/==high%&&low/==low%)
printf("%d\n",n);
}
return ;
}

答案为

.

最新文章

  1. Mac mySql ERROR 2002 (HY000): Can&#39;t connect to local MySQL server through socket &#39;/tmp/mysql.sock&#39; (2)的解决办法
  2. HTML5打造的炫酷本地音乐播放器-喵喵Player
  3. Android studio -VSN 使用笔记
  4. jQueryMobile控件之页面切换
  5. Windows自带的驱动程序例子都在哪里?
  6. android中自定义view---实现竖直方向的文字功能,文字方向朝上,同时提供接口,判断当前touch的是哪个字符,并改变颜色
  7. C# 以管理员方式启动Winform,进而使用管理员控制Windows Service
  8. Android手机分辨率基础知识(DPI,DIP计算)二
  9. C++中构造函数调用构造函数
  10. C#缩放和裁剪图片
  11. C# 自定义重绘TextBox
  12. 机器学习 —— 概率图模型(Homework: Exact Inference)
  13. Visual Studio下SQLite数据库开发环境设置
  14. 3.类型、值和变量-JavaScript权威指南笔记
  15. django分页linaro-django-pagination
  16. WPFbutton样式
  17. 如何做到 Laravel 配置可以网站后台配置【社交系统ThinkSNS+研发日记四】
  18. WPF ResourceDictionary 主题资源替换(一)
  19. 使用Pyquery+selenium抓取淘宝商品信息
  20. 数据绑定和第一个AngularJS Web应用

热门文章

  1. 函数反抖 debounce
  2. 一个单元格占两行三列的HTML代码为
  3. linux笔记常用命令
  4. 【JavaScript框架封装】实现一个类似于JQuery的缓存框架的封装
  5. php的优缺点(转)
  6. [2018.8.12]模拟赛B组
  7. vue项目优化--使用CDN和Gzip
  8. 自学python 第二天
  9. CF909B Segments
  10. wordpress迁移以及遇到的一些问题[mysql备份导入导出][固定链接404]