【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

来源:互联网 发布:语文句子成分划分软件 编辑:程序博客网 时间:2024/04/28 12:46

具体要求:数据范围在10万以内。


方法一:


直接利用定义求解,注意sqrt的原型返回double型数据,所以强制类型转换(不显式地写出也默认转换),由于完全平方数误差较小,所以可以正确求解。(例如2的平方根之1.4几,转换后成了1,肯定被判出去了,而4的平方根可能是1.999999或者2.00001类似的,所以转换后是2,满足了),能够有效地控制浮点数的误差,进行浮点数和整数的转化,可以解决一类包含平方根的数学类问题。

#include <stdio.h>#include <math.h> int main(){int t1,t2,i;for(i=0;i<=100000;++i){t1 = (int)sqrt(i+100);t2 = (int)sqrt(i+168);if(t1*t1 == i+100 && t2*t2 == i+168)printf("%d\n",i);}return 0;}

方法二:


正经地使用整数解决问题...

首先预处理出全部完全平方数,然后二分查找...

#include <iostream> using namespace std;int len = 0;int pre[1005];bool b_search(int x){int i = 0;int j = len-1;while(i<j){int mid = (i+j)>>1;if(pre[mid] == x)return true;else {if(pre[mid] > x)j = mid-1;else i = mid+1;}}return x == pre[i];}int main(){for(int i=0;i*i<=100000;++i)pre[len++] = i*i;for(int i=0;i<=100000;++i)if(b_search(i+100) && b_search(i+168))printf("%d\n",i);return 0;}

方法三:


懒得写二分查找的话,就用STL吧...

#include <iostream>#include <algorithm> using namespace std;int main(){int pre[1005];int len = 0;for(int i=0;i*i<=100000;++i)pre[len++] = i*i;for(int i=0;i<=100000;++i)if(binary_search(pre,pre+len,i+100) && binary_search(pre,pre+len,i+168))printf("%d\n",i);return 0;}

方法四:


空间换时间,直接用哈希表,不用二分查找了...

声明为static可以免去初始化的操作


#include <iostream>using namespace std;static bool hash[100010];int main(){for(int i=0;i*i<=100000;++i)hash[i*i] = true;for(int i=0;i<=100000;++i)if(hash[i+100] && hash[i+168])printf("%d\n",i);return 0;}

PS:结果好少啊,出乎意料


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 欠医院十几万钱怎么办 当你迷茫的时候怎么办 被骗了一年的积蓄怎么办 当兵身高视力都不够怎么办 当兵中途不想当了怎么办 当兵后不想当了怎么办 在泰国想剪头发怎么办 省二证书丢了怎么办 职称计算机级别报错怎么办 科一不会用电脑怎么办 西安科目三挂了怎么办 我有c照想考a照怎么办 叉车证单位不给怎么办 刚练科目三害怕怎么办 摩托科目一考不过怎么办 人老了视力不好怎么办 2岁宝宝视力不好怎么办 唱歌音总是唱不准怎么办 考级没地方练琴怎么办 少儿声乐唱不准音该怎么办 学历认证报告编号忘记了怎么办 自考挂科10门了怎么办 高中的会考没过怎么办 毕业证和学位证丢了怎么办 大学毕业证学位证丢了怎么办 大学毕业证和学位证丢了怎么办 毕业证是士官证号码怎么办 自考本科准考证丢了怎么办 自考档案搞丢了怎么办 自考本科档案在自己手里怎么办? 本科自考准考证丢了怎么办 大学团员证丢了怎么办 大学开学团员证丢了怎么办 研究生开学没有团员证怎么办 研究生开学已经不是团员了怎么办 毕业了要搬宿舍怎么办 中专学历认证已停止怎么办 中专不做学历认证考试怎么办 大学生欠学费被扣毕业证怎么办 考警校体检没过怎么办 美国签证申请预约名字写错怎么办