520-5 翻倒数

发布时间 2023-05-20 22:01:10作者: 轻挼草色

一、问题描述:

我们看到,把数字 0-9 翻倒,有的数字就认不出来了,比如 2、3、4、5、7;有的数字看上去没什么大的变化,比如 0、1、8;还有的数字变成了另一个数,比如 6 变成 9,9 变成 6。

给定一堆数字,请你判别每个数有没有可能是另一个数字翻倒形成的。

输入格式:

输入在第一行中给出一个正整数 n(20),随后 n 行,每行给出一个不超过 100 位的数字。

输出格式:

对每个给定的数字,如果它可能是由另一个数字翻倒得来的,就输出那个翻倒前的原始数字;如果不可能,就输出 bu ke neng

输入样例:

4
10086
233
9999
17456

输出样例:

10089
bu ke neng
6666
bu ke neng

二、代码实现:

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 int main()
 5 {
 6     int n;
 7     char a[21][101]={0};
 8     int flag[21]={0};
 9     cin>>n;
10     for(int i=0;i<n;i++)
11     {
12         cin>>a[i];
13     }
14     for(int i=0;i<n;i++)
15     {
16         for(int j=0;j<strlen(a[i]);j++)
17         {
18             if((a[i][j]=='2')||(a[i][j]=='3')||(a[i][j]=='4')||(a[i][j]=='5')||(a[i][j]=='7'))
19             {
20                 flag[i]=1;//bu ke neng
21                 break;
22             }
23             if((a[i][j]=='6')||(a[i][j]=='9'))
24             {
25                 flag[i]=2;
26             }
27         }
28     }
29     for(int i=0;i<n;i++)
30     {
31         if((flag[i]==1))
32         {
33             cout<<"bu ke neng"<<endl;
34         }
35         else
36         {
37             for(int j=0;j<strlen(a[i]);j++)
38             {
39                 if(a[i][j]=='6')
40                     a[i][j]='9';
41                 else if(a[i][j]=='9')
42                     a[i][j]='6';
43             }
44             cout<<a[i]<<endl;
45         }
46     }
47     return 0;
48 }