问题一:回文数
问题描述
1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
输出格式
按从小到大的顺序输出满足条件的四位十进制数。
思路:分别求出这个四位数的每一个位上的数,然后做比较
#include
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<
}
}
return 0;
}
问题二:特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
思路:特殊回文数不但要求该数字为回文数,还要求该数字每一位数字的和相加等于一个数,而且该题目包含了四位和五位数
#include
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<
}
}
}
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<
}
}
}
return 0;
}
比较:问题二的数字和计算量都大于第一个,通过cpu使用的时间上就可以看出来
提交序号
姓名
试题名称
提交时间
代码长度
语言 C C++ JAVA
评测结果 正确 错误 编译出错 运行错误 运行超时 内存超限
得分 100 1~99 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/zhangpinghao/article/details/18778357