关于"回文数"的编程实验(二)
2009-10-27 16:11
429 查看
关于回文数的形成,还有一个非常有趣的猜想如下:
* 任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数如果不是回文数,则重复以上步聚
* 最终可得到一个回文数
回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证明。
下面这个小程序主要是验证这个猜想。用户可以输入任意一个正数,程序会不断使用上面的方式尝试产生一个回文数,或者直到程序的数据溢出(long long 类型)。
* 任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数如果不是回文数,则重复以上步聚
* 最终可得到一个回文数
回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证明。
下面这个小程序主要是验证这个猜想。用户可以输入任意一个正数,程序会不断使用上面的方式尝试产生一个回文数,或者直到程序的数据溢出(long long 类型)。
/* * * 任取一个十进制整数,将其倒过来后与原来的整数相加,得到一个新的整数后重复以上步聚, * 则最终可得到一个回文数。请编程验证。 * 回文数的这一形成规则目前还属于一个猜想,尚未得到数学上的证明。 * */ #include <stdlib.h> #include <iostream> #include <iomanip> using namespace std; #define MAX_DIGITS 20 // check if this number is a palindrome number // if yes, return -1 // othwise, return its reversed number long long isPalindrome(long long num) { int digitCount = 0; int digits[MAX_DIGITS]; do { digits[digitCount] = num % 10; num = (num - digits[digitCount]) / 10; digitCount++; } while(num != 0); int j; for(j=0; j < digitCount /2; j++) { if (digits[j] != digits[digitCount - j -1]) { break; } } if ( j == digitCount/2) { // it is a palindrome return -1; } else { // try to return the reverse number long long reversedNum = 0L; for(int i=0; i<digitCount; i++) { reversedNum *= 10; reversedNum += digits[i]; } return reversedNum; } } /* * */ int main(int argc, char** argv) { long long number; while(true) { cout<<"/n/nPlease input a number ( -1 to quit ):"; cin>>number; if (number == -1) { break; } long long reversedNum; int round = 1; while ((reversedNum = isPalindrome(number)) != -1L) { if (reversedNum < 0L) { cout<<"Data overflowed ! Quit /n"<<endl; break; } long long sum = number + reversedNum; cout<<setw(3)<<round<<": "<<number<<" + "<<reversedNum<<" = "<<sum<<endl; round++; number = sum; } } return (EXIT_SUCCESS); }
相关文章推荐
- 关于"回文数"的编程实验(一)
- 关于"回文数"的编程实验(三)
- 关于Java中的"=="、equals和"="
- 关于"IR21"的自举电路
- 天翎推出关于"MyApps平台用户满意度"问卷调查活动
- 关于"对称轴 (Symmetry, ACM/ICPC Seoul 2004, UVa1595"的讨论
- "《数据结构》实验一:VC编程工具的灵活使用“以及总结
- 关于"class type redefinition"
- 关于"class type redefinition"
- 关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
- 关于"[MYSQL ERROR(2006):MySQL server has gone away]"的解决方法
- 关于“#ifdef __cplusplus” 和 " extern "C" 的问题
- 关于 "CSS3111: @font-face encountered unknown error" in IE8
- 关于"Uncaught TypeError: Cannot read property 'time' of null"的处理
- (转帖)总结C++中三种关于"new"的使用方法
- 关于"net::ERR_CONNECTION_ABORTED"和"Firebug 达到了 Post 请求大小限制"的问题
- 关于oracle数据库中直接修改表中数据点击小锁出现"these query results are not updateable"的问题
- 德州大学Jose教授关于"如何做好研究和博士申请"报告的心得体会
- 关于"不能联系到XXX域控制器"错误,排查错误原因.
- 关于"安卓端打包图片的格式"问题