10041-回文数

题目地址:http://39.105.45.77/problem/10041

回文数

Description

回文数是一个有意思的数字,例如:“上海的自来水来自海上”,这就是一个回文数,回文数的特点是从左边读和从右边读是一样的。现在请你判断一些数,他们是不是回文数。

 

Input

1、测试有多组数据,每组数据的第一行输入一个数 a , 保证 a <200;

2、每组数据有 a 个数,保证这些数字<10,000,000;

 

Output

输出:如果这个数字数一个回文数,则输出"YES",否则输出"NO",

每个数字后面要划行,同时,每一组数据中间换行。

 

Sample Input 1 

3
1
2
3

Sample Output 1

YES
YES
YES

Sample Input 2 

2
101
220221

2
2023
333

Sample Output 2

YES
NO

NO
YES

该题目需要特别注意"测试有多组数据"。其难度不是很大,给出以下AC解决代码。
复制代码
 1 /*
 2  * 作者: 廖乾佳
 3  */
 4 #include<stdio.h>
 5 #include<string.h>
 6 #include<stdlib.h>
 7 int main()
 8 {
 9     int n, leng, flag, i, j, k;
10     char str[12];
11     while (scanf("%d\n",&n) != EOF) {//读取n组数据
12         for (i = 1; i <= n; i++) {//读取每一组数据中的数值
13             flag = 1;
14             memset(str, 0, sizeof(str));//为str数组初始化内存。这行代码不要也行,因为char str[12];已经初始化内存了
15             gets(str);
16             leng = strlen(str);
17             for (j= 0, k = leng - 1; j< (leng - 1) / 2 + 1; j++, k--) {//从前往后对比
18                 if (str[j] != str[k]) { flag = 0; break; }//期间有一个不匹配就退出循环
19             }
20             if (flag == 1) { printf("YES\n"); }//根据标志判断输出结果
21             else if (flag == 0) { printf("NO\n"); }
22         }
23         printf("\n");
24     }
25     return 0;
26 }
27 //点评:做法简洁干练,思路清晰。memset看起来有点画蛇添足了。可以完全省略
复制代码

下一个代码与楼上解法是一样的,但是代码更加清晰:

复制代码
 1 /**
 2  * 作者: test
 3  */
 4 #include <stdio.h>
 5 #include <string.h>
 6 int main()
 7 {
 8     int i,j,length,flag=1;
 9     char num[100]; 
10     int n;
11     while(scanf("%d",&n) != EOF)
12     {
13         char m=getchar();     //吞掉回车符号 
14         
15         for( i = 0;i < n;i++)
16         {
17             gets(num);
18             length=strlen(num);        
19             for(j = 0;j <= (length-1)/2;j++)
20             {
21                 if(num[j] != num[length-1-j])
22                 {
23                     flag=0;
24                     break;
25                 }        
26             }    
27             if(flag == 1)//判断是否为回文数    
28             {
29                 printf("YES\n");
30             }
31             else
32             {
33                 printf("NO\n");
34             }    
35             
36             flag=1;                
37         }   
38       printf("\n");
39     }
40     return 0;
41 }
复制代码

下面来看作者的解法(C++)最常规的位数计算:

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int plalindrome(int n)///  判断回文
 4 {
 5     int num = 0;
 6     int temp = n;
 7     while(temp)
 8     {
 9         num = num*10+temp%10;
10         temp/=10;
11     }
12     if(n==num)
13         return 1;
14     else
15         return 0;
16 }
17 int main()
18 {
19     int a;
20     while(~scanf("%d",&a))
21     {
22         int temp ;
23         for(int i = 0;i<a;i++){
24             scanf("%d",&temp);
25             if(plalindrome(temp)){
26                    cout<<"YES"<<'\n';
27             }else{
28                 cout<<"NO"<<'\n';
29             }
30         }
31         cout<<'\n';
32     }
33     
34     return 0;
35 }
复制代码

测试数据:

测试点一:
3
3
111111
202
复制代码
测试点二:
3
121
2220
20203

4
21
23
222
1000001
复制代码
复制代码
测试点三:
100
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
1000001
复制代码
复制代码
测试点四:
10
1
2
3
4
5
6
7
8
9
1010101
复制代码
复制代码
测试点五:
10
101
202
303
404
505
60601
108463
3847433
344553
345456

1
1000001
复制代码

 



posted @   小尾学长  阅读(481)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示