记录一下做过的题目#1,C++,十进制转二进制,对称数

记录一下做过的题目#1

将一个数的数码倒过来所得到的数叫做原数的反序数,如果一个数等于它的反序数,则称它为对称数。编写程序,采用递归算法求不超过1993的最大的二进制的对称数。【C++】

暂时不会用递归算法,先用最简单的方法试试看,期待他可以运行的程度。

#include <iostream>
#include <cmath>
using namespace std;

long long bin(long long dec)
{
	long long d, i=0;
	long long bi=0;
	while(dec!=0)
	{
		d=(dec%2)*pow(10,i);
		bi=bi+d;
		dec=dec/2;
		i=i+1;
	}
	return bi;
}

int dui(long long bi)
{
	long long d=0,b=bi;
	while(b!=0)
	{
		d=d*10+b%10;
		b=b/10;
	}
	if(d==bi)
		return 1;
	else
		return 0;
}

int main()
{
    long long a;
    long long b;
    int flag;
    for(a=1993;a>=0;a--)
    {
    b=bin(a);
    flag=dui(b);
    if(flag==1)
    {
	cout<<a<<endl<<b<<endl<<flag<<endl;
    break;
	}
	}
    return 0;
}

查一下怎么做出递归算法再修改一下。
之前试了一下用int的话会出现乱码……但其实也知道都用long会导致程序运行变慢。
有什么方法可以变得更好呢。

    原文作者:进制转换
    原文地址: https://blog.csdn.net/qq_40535736/article/details/84675725
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞