Advertisement

蓝桥杯训练——2.27

阅读量:

基础练习 回文数

问题描述

1221是一个特别的数;它从左到右读和从右到左读是相同的;找出所有这样的四位十进制数。

输出格式

按从小到大的顺序输出满足条件的四位十进制数。

思路:

循环从数值1000开始执行,并一直到数值9999为止。该循环按照从小到大的顺序进行输出,并且所有的输出结果均为四位二进制数值。具体实现细节请参考代码部分。

源代码:

复制代码
    #include <stdio.h>
    int main()
    {
    int i,n,num;
    int sum=0,x;      
    for(i=1000;i<10000;i++)    
    {
        num=i;                                     
        x=0;                         
        while(num>0)
        {
            x=x*10+num%10;          
            sum+=(num%10);                       
            num/=10;
        }
        if(x==i)                 
            printf("%d\n",i);
    }
    return 0;
    }

视频练习:

视频链接:https://www.bilibili.com/video/BV1ty4y117go/?p=1

心得:

判定一个数是否为回文数最常用的算法就是通过将该序列倒置来进行比较。具体来说就是先将目标数值转化为可操作的形式并将其存储在一个数据结构中随后将其顺序进行反转之后再与原始数值进行对比如果两者一致则证明该数值是一个典型的回文结构否则则反之。该方法的时间复杂度为O(n)即需要至少n次运算来完成这一系列操作以确保结果的准确性

题目练习:

问题描述:

识别给定数值是否具有回文特性:一种算法通过逐位反转的方法对输入数值进行操作并判断其是否满足特定条件以确定其属性

代码:

复制代码
    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int n;
    	int i;
    	int tmp;
    	int sum = 0;
    	printf("\n");
    	scanf("%d", &n);
    	for (i = n; i; i /= 10)
    	{
    		tmp = i % 10;
    		sum = sum * 10 + tmp;
    	}
    	printf("%d\n", sum);
    	if (sum == n)
    	{
    		printf("YES\n");
    	}
    	else
    		printf("NO\n");
    	return 0;
    }

全部评论 (0)

还没有任何评论哟~