思路:分别求出这个四位数的每一个位上的数,然后做比较
#include<iostream> using namespace std; int main() { for(int n=1000;n<10000;n++) { int a = n/1000; //a是千位 int b = (n - a*1000)/100; //b是百位 int c = (n - a*1000 - b*100)/10;//c是十位 int d = (n - a*1000 - b*100)%10;//d是个位 if(a == d&&b == c) { cout<<n<<endl; } } return 0; }
思路:特殊回文数不但要求该数字为回文数,还要求该数字每一位数字的和相加等于一个数,而且该题目包含了四位和五位数
#include<iostream> using namespace std; int main() { int m; cin>>m; for(long n=10000;n<100000;n++) { int a = n/10000; //第一个 int b = (n - a*10000)/1000; //第二个 int c = (n - a*10000 - b*1000)/100; //第三个 int d = (n - a*10000 - b*1000 - c*100)/10; //第四个 int e = (n - a*10000 - b*1000 - c*100)%10; //第五个 if(a == e && b == d) //是否为回文数 { if(a+b+c+d+e == m) //是否为五位特殊回文数 { cout<<n<<endl; } } } for(long n=100000;n<1000000;n++) { int a = n/100000; //第一个 int b = (n - a*100000)/10000; //第二个 int c = (n - a*100000 - b*10000)/1000; //第三个 int d = (n - a*100000 - b*10000 - c*1000)/100; //第四个 int e = (n - a*100000 - b*10000 - c*1000 - d*100)/10; //第五个 int f = (n - a*100000 - b*10000 - c*1000 - d*100)%10; //第六个 if(a ==f && b ==e && c == d) //是否为回文数 { if((a+b+c+d+e+f) == m) //是否为六位特殊回文数 { cout<<n<<endl; } } } return 0; }
提交序号 | 姓名 | 试题名称 | 提交时间 | 代码长度 | CPU使用 | 内存使用 | 评测详情 | |||
---|---|---|---|---|---|---|---|---|---|---|
53642 | 赵哲 | 特殊回文数 | 01-25 22:58 | 910B | C++ | 正确 | 100 | 31ms | 860.0KB | 评测详情 |
53264 | 赵哲 | 回文数 | 01-25 18:39 | 324B | C++ | 正确 | 100 | 0ms | 860.0KB | 评测详情 |
原文:http://blog.csdn.net/qsyzb/article/details/18778407