论文部分内容阅读
摘 要 位数比较大的整数运算,称为大数问题。大数问题中C++提供的int、long等整数类型都无法满足精度要求。解决这类问题一般通过高精度算法,人工模拟整数运算过程,但此过程相对复杂。在某些情况下,我们可以巧妙的利用double类型来实现大数运算,从而简化解题过程。
关键词 大数;高精度
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)13-0071-01
1 题目引入
排它平方数:求满足条件A*A=B的A,其中:
A是个6位数,并且它的每个数位上的数字都是不同的;
B中不含A中出现过的数。
2 高精度算法求解
这道题只需枚举100000到999999之间满足每个数位上的数字都不同的整数,然后利用高精度乘法计算出B,再判断B中是否含有A中数。若不含有A中的数,则满足条件,枚举数即为所求解,记录后继续枚举;反之,不是所求解,继续枚举。
3 结合输出格式和double类型巧解大数问题
大数问题题目都对数据有着严格的限制,一般情况下,如果用传统的int ,long等整数类型来运行计算题目,往往会出现溢出而导致结果出错。在这里我们可以巧妙地运用double这个双精度浮点型来解决大数问题。我们仍用排它平方数这道题来说明。
3.1 double类型的数值范围与int,long的比较
int,long类型占4个字节,数值范围为-2E+31~2E-31-1,而double类型占8个字节,数值范围为-1.7E-308~1.7E+308。所以如果我们能在解大数问题时引入double类型来做存储的容器,问题将大大的被简化,此题就可用double类型来存储而不会出现溢出等现象。
3.2 使用double类型带来的新问题
如果我们使用double型来计算排它平方数,在对数值求余等操作时就存在一定的困难,数值每个数位上的数难以比较
判断。
3.3 sprintf函数的引入
3.4 结合输出格式解决题目问题
参考文献
[1]2013第四届蓝桥杯C/C++本科A组第二题.2013(5).
[2]谭浩强著.C程序设计(第四版)[M].北京:清华大学出版社,2011.
作者简介
杨寒(1993-),男,本科,研究方向:算法。
李福锦(1993-),男,本科,研究方向:信息与计算
科学。
王烨(1993-),女,本科,研究方向:统计学。
关键词 大数;高精度
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2013)13-0071-01
1 题目引入
排它平方数:求满足条件A*A=B的A,其中:
A是个6位数,并且它的每个数位上的数字都是不同的;
B中不含A中出现过的数。
2 高精度算法求解
这道题只需枚举100000到999999之间满足每个数位上的数字都不同的整数,然后利用高精度乘法计算出B,再判断B中是否含有A中数。若不含有A中的数,则满足条件,枚举数即为所求解,记录后继续枚举;反之,不是所求解,继续枚举。
3 结合输出格式和double类型巧解大数问题
大数问题题目都对数据有着严格的限制,一般情况下,如果用传统的int ,long等整数类型来运行计算题目,往往会出现溢出而导致结果出错。在这里我们可以巧妙地运用double这个双精度浮点型来解决大数问题。我们仍用排它平方数这道题来说明。
3.1 double类型的数值范围与int,long的比较
int,long类型占4个字节,数值范围为-2E+31~2E-31-1,而double类型占8个字节,数值范围为-1.7E-308~1.7E+308。所以如果我们能在解大数问题时引入double类型来做存储的容器,问题将大大的被简化,此题就可用double类型来存储而不会出现溢出等现象。
3.2 使用double类型带来的新问题
如果我们使用double型来计算排它平方数,在对数值求余等操作时就存在一定的困难,数值每个数位上的数难以比较
判断。
3.3 sprintf函数的引入
3.4 结合输出格式解决题目问题
参考文献
[1]2013第四届蓝桥杯C/C++本科A组第二题.2013(5).
[2]谭浩强著.C程序设计(第四版)[M].北京:清华大学出版社,2011.
作者简介
杨寒(1993-),男,本科,研究方向:算法。
李福锦(1993-),男,本科,研究方向:信息与计算
科学。
王烨(1993-),女,本科,研究方向:统计学。