九度OJ 题目1064:反序数

来源:互联网 发布:mac网络偏好设置在哪 编辑:程序博客网 时间:2024/04/20 19:04
题目1064:反序数

时间限制: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;
}

0 0
原创粉丝点击