【程序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:结果好少啊,出乎意料
- 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 【程序13】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 【程序13】 题目:一个整数,它加上100后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少?
- 【程序3】一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- [Java] 练习题013: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 第三题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少
- HDU 2602 Bone Collector (0/1背包问题)
- Linux博文索引
- jQuery zTree v3.5 实例4 对树的节点进行编辑和删除
- 初为项目经理
- POJ 1002多重映射:map的用法
- 【程序3】 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- Itercast中课件整理
- 问答小程序
- python第三方库推荐 - dateutil
- pc 和 android 通信 的一小点注意。
- 动画系统的一些功能
- Linux进程间通信——使用信号
- 游戏平台账号认证网关的实现
- C++模版中的typename关键字和嵌套依赖类型(依赖名称)