时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:5927
解决:4223
-
题目描述:
-
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
-
输入:
-
程序无任何输入数据
-
输出:
-
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开
-
-
题目地址:http://ac.jobdu.com/problem.php?pid=1064
-
-
问题分析:
-
判断两个数是否为逆序数的两个条件:
-
①两个数的位数长度相等。
-
②一个数转置后和另一个数相等
-
代码:
-
#include <iostream>
#include<stdio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
bool isAdnumber(int p1,int p2){
//判断p1,p2是否为反序数
int s1[4],s2[4];
int size1=0,size2=0;
while(p1!=0){
s1[size1++]=p1%10;
p1/=10;
s2[size2++]=p2%10;
p2/=10;
}
while(p2!=0){
s2[size2++]=p2%10;
p2/=10;
}
if(size1 != size2){ //若反序数长度超过4,则直接判定为非逆序数
return false;
}
for(int i=0,j=3;i<4;i++,j--){
if(s1[i] != s2[j]){ //有一个不相等即不是逆序数
return false;
}
}
return true;
}
int main(int argc, char *argv[]) {
for(int i=1000;i<10000;i++)
{
int tmp=9*i;
//分解各位,判断是否为反序数
if(isAdnumber(i,tmp) == true){
cout<<i<<" ";
}
}
return 0;
}