东方博宜 1386 - 小丽找半个回文数

题目描述

小丽同学在编程中学到了回文数的概念,如果一个数正过来读和反过来读是同一个数,那么这个数就是回文数;比如:22、55、88、6666、121121、686686、1232112321 都是回文数,小丽发现,这样的数不算多。

于是小丽有个想法,如果这个数不是回文数,但这个数在 22 进制或者 1616 进制下是回文数,就算这个整数是半个回文数,比如 417417 并不是回文,但 417 对应的 16 进制数是 1A1 是回文数,因此 417 算半个回文数。

请你编程帮助小丽找符合条件的半个回文数。

输入

第一行是一个整数 n(5≤n≤100); 第二行是 n 个整数(这些整数都是[0,108] 之间的整数);

输出

所有符合条件的半个回文数,每行一个。

样例

输入

5
121 417 27 100 21

输出

417
27
21

思路:

1、函数部分:

定义函数,先将n转换成d进制。

int x=0;
char c;
string s;
while(n!=0){//将n转换成d进制
    x=n%d;
    if(x<10) c=x+'0';
    else c=x+'A'-10;
    s=c+s;
    n=n/d;
}

再判断这个d进制的数是否是回文的,如果不是,直接return 0return false,是,return 1return true

for(int i=0;i<s.size();i++){//循环判断是否为回文
    if(s[i]!=s[s.size()-i-1]){
        return 0;
    }
}
return 1;

函数部分完整代码:

bool fun(int n,int d){
    int x=0;
    char c;
    string s;
    while(n!=0){//将n转换成d进制
        x=n%d;
        if(x<10) c=x+'0';
        else c=x+'A'-10;
        s=c+s;
        n=n/d;
    }
    for(int i=0;i<s.size();i++){//循环判断是否为回文
        if(s[i]!=s[s.size()-i-1]){
            return 0;
        }
    }
    return 1;
}

2、主函数部分:

1、读入,这句话是不是多余的

cin>>n;
for(int i=0;i<n;i++){
    cin>>x;
}

2、边读入每一个数x边判断,

条件1:x在10进制下不是回文数(满足半个回文数的条件)。

if(!fun(x,10))


条件2:

分两种情况:

情况1:x在2进制中是回文数。

情况2:x在16进制中是回文数。

这两种情况满足一种即可。

if(!fun(x,10)&&(fun(x,2)||fun(x,16)))

3、满足条件,输出x

if(!fun(x,10)&&(fun(x,2)||fun(x,16))){
    cout<<x<<endl;
}

主函数部分完整代码:

int n,x;
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x;
        if(!fun(x,10)&&(fun(x,2)||fun(x,16))){
            cout<<x<<endl;
        }
    }
    return 0;
}

完整代码:

#include <bits/stdc++.h>
using namespace std;
bool fun(int n,int d){
    int x=0;
    char c;
    string s;
    while(n!=0){//将n转换成d进制
        x=n%d;
        if(x<10) c=x+'0';
        else c=x+'A'-10;
        s=c+s;
        n=n/d;
    }
    for(int i=0;i<s.size();i++){//循环判断是否为回文
        if(s[i]!=s[s.size()-i-1]){
            return 0;
        }
    }
    return 1;
}
int n,x;
int main(){
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>x;
        if(!fun(x,10)&&(fun(x,2)||fun(x,16))){
            cout<<x<<endl;
        }
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 小丽君统计器是一种用于统计数据的工具。它可以帮助用户对一系列数据进行整理和分析。小丽君统计器具有简单易用的界面和丰富的功能,适用于各种统计需求。 小丽君统计器的主要功能包括数据输入、数据处理和数据展示。用户可以通过输入数据的方式将需要统计的数据导入到统计器中,然后选择合适的统计方法进行处理。小丽君统计器支持常见的统计方法,如平均数、中位数、众数、标准差等,可以根据用户的选择生成相应的统计结果。 此外,小丽君统计器还提供了数据可视化的功能。用户可以通过图表、柱状图、折线图等形式将统计结果直观地展示出来,帮助用户更好地理解数据的分布和趋势。 小丽君统计器具有一定的灵活性和扩展性。用户可以根据自己的需求设定统计器的参数,进行特定的数据分析。此外,小丽君统计器还支持数据的导出和分享,用户可以将统计结果保存到文件或分享给他人进行交流和讨论。 总的来说,小丽君统计器是一款功能强大、操作简单的统计工具,适用于各种统计需求。它可以帮助用户方便地进行数据统计和分析,提供直观的统计结果,并支持数据可视化和数据的导出分享。无论是数据处理还是数据展示,小丽君统计器都能够满足用户的要求,并帮助用户更好地理解和利用数据。 ### 回答2: 小丽君统计器是一种功能强大的计数工具。它具有简洁明了的界面和操作简单的特点,非常适合用于各种数据的统计与分析工作。 小丽君统计器拥有丰富的统计功能。它能够对数据进行快速的计数和统计,能够统计出数据的总数、平均数、最大值、最小值等常用统计指标。同时,它还可以实现对数据的分类统计,使用户可以根据自己的需要进行灵活的数据分组和统计分析。 小丽君统计器还具有强大的图像展示功能。它能够生成各种类型的图表,包括折线图、柱状图、饼图等,以直观的方式展示数据的分布和趋势。这些图表不仅美观简洁,而且能够帮助用户更好地理解和分析数据。 此外,小丽君统计器还支持数据的导入和导出。用户可以将需要进行统计的数据从其他应用程序中导入到小丽君统计器中进行处理,并将结果导出保存为常见的文件格式,方便与他人共享和进一步分析。 综上所述,小丽君统计器是一款性能出色、操作简单、功能丰富的计数工具。它能够帮助用户高效地进行数据的统计和分析,为用户的工作和决策提供有力的支持。无论是个人数据分析还是企业统计报告,小丽君统计器都是您不可缺少的得力助手。 ### 回答3: dltj-7.1小丽君统计器是一种小型的统计器具,主要用于数据的记录和分析。它采用了数字化的方式进行数据的收集和处理,能够高效地进行统计工作。 该统计器具具备以下功能和特点。首先,它拥有简洁易懂的操作界面,可以方便用户快速上手,并且具备较高的操作性和易用性。其次,它支持多种统计数据的输入方式,包括手动输入、自动导入等,用户可以根据实际需求选择合适的方式进行数据录入。 除了数据的录入外,dltj-7.1小丽君统计器还可以进行多种统计计算。它能够自动对输入的数据进行整理和分类,并给出相应的统计结果。用户可以选择不同的统计方法,如平均数、中位数、众数等,来了解数据的特征和分布情况。此外,该统计器还支持数据的图表展示功能,可以直观地呈现数据的变化趋势,帮助用户更好地理解数据。 另外,dltj-7.1小丽君统计器还具备数据分析和预测功能。它可以根据现有的数据,进行数据模型的构建,并通过模型对未来的趋势做出预测。这对于一些需要预测和决策的场景,如市场研究、经济预测等,具有很大的实用价值。 总的来说,dltj-7.1小丽君统计器是一种功能强大、操作便捷的统计器具,可以广泛应用于不同领域的数据统计和分析工作中,提高统计工作的效率和准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值