#问题求解与编程# 实验四 F 小A回文数

小A回文数

发布时间: 2018年4月9日 15:12   时间限制: 1000ms   内存限制: 128M

描述

最近小A在研究一个数学问题。

如果一个数n,它的二进制数和十进制数是回文数(例如1001,66,64446都是回文数),那么小A就把它命名为小A回文数。但是小A想知道,如果给定两个数n和m,它们之间有哪些数是小A回文数呢?(1<=n<=m<=10^6)

输入

输入包含多组,每组测试数据包含两个整数n,m,其中1<=n<=m<=1000000

输出

对于每一组测试数据,输出的结果之间用换行隔开。

样例输入1
1 5
样例输出1
1
3
5
样例输入2
5 10
样例输出2
5
7
9
———————————————————————————————————————————————————

小A回文数 解决关键在于进制问题 下面附上AC代码:

#include <stdio.h>  
#include<iostream>
using namespace std; 
bool isPal(int num, int radix)
{
	int temp = num;
	int pal = 0;
	for(;num!=0;)
	{
		pal *= radix;
		pal += num%radix;	
		num /= radix;
	}
	return temp == pal;
}

//取模除法交替弄 
int main()  
{  
	int A[10000];
	int a,b,count, flag,j;
	while(cin>>a>>b)
	{
		for(int i=a;a<=b;a++)
		{
			count = 0;
			flag = 0;
			j=0;
			if(isPal(a,2)&&isPal(a,10)) 
			cout<<a<<endl;
		}
	}
    return 0;  
}

下面是标程:

#include<cstdio>
bool ispal(int num,int radix)
{
    int t=num;
    int pal=0;
    while(num)//在计算机中,0表示假,非0表示真,这里就相当于num为真,相当于while(num!=0)
    {
        pal*=radix;//判断radix进制下
        pal+=num%radix;
        num/=radix;
    }
    return t==pal;
}
bool judge(int num)
{
    if(ispal(num,2)&&ispal(num,10))//在二进制下和十进制下都为回文数
        return true;
    return false;
}
int main()
{
    //freopen("data.in","r",stdin);
    int n,m;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for(int i=n;i<=m;i++)
            if(judge(i))
                printf("%d\n",i);
    }
    return 0;
}
关键还是在判断在几进制之下是不是回文数的函数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值