|
发表于 2016-11-20 22:13:24
|
显示全部楼层
本帖最后由 joker11111 于 2016-11-21 13:23 编辑
- //-------------------------------------------
- //04--找出最大的由3位数构成的回文数
- //一个回文数是指从左读或者从右读都是一样的数
- //如9009 = 91 * 99 为最大的由两位数乘积构成的回文数
- //-------------------------------------------
- #include <windows.h>
- #include <iostream>
- #include <time.h>
- #include <math.h>
- using namespace std;
- long int PalNum(int& m);
- bool JuPalNum(long int& m);
- int main()
- {
- clock_t start, finish;
- double totaltime;
- start = clock();
- int m = 3;
- cout << "最大的由" << m << "位数乘积构成的回文数为:" << PalNum(m) << endl;
- finish = clock();
- totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
- cout << "此程序的运行时间为" << totaltime << endl;
- system("pause");
- return 0;
- }
- /**********************************
- 功能:返回最大的由m位数乘积构成的回文数
- ***********************************/
- long int PalNum(int& m)
- {
- int p, q, p1, q1;
- long int s,max_s = 0;
- for (p = pow(10, m - 1); p < pow(10, m); p++)
- {
- for (q = pow(10, m - 1); q < pow(10, m); q++)
- {
- s = p * q;
- if (JuPalNum(s) && s > max_s)
- {
- max_s = s;
- p1 = p;
- q1 = q;
- }
- }
- }
- cout << p1 << "*" << q1 << "=" << max_s << endl;
- return max_s;
- }
- /**********************************
- 功能:判断这个数是否为回文数
- ***********************************/
- bool JuPalNum(long int& m)
- {
- int l = 0; //l为传入m的位数
- long int n = 0, p = m, q;
- while (p)
- {
- p /= 10;
- l++;
- }
- p = m;
- while (l)
- {
- q = p%10;
- p /= 10;
- n += q * pow(10,l-1);
- l--;
- }
- if (n == m)
- return true;
- else
- return false;
- }
复制代码
913*993 = 906609
|
|