蓝桥杯真题——三角回文数(C语言)

问题描述

对于正整数 n, 如果存在正整数 k 使得 n=1+2+3+⋯+k=k(k+1)2n=1+2+3+⋯+k=k(k+1)/2​, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+⋯+36366066=1+2+3+⋯+363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。 如果一个整数 nn 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。 请问, 第一个大于 20220514 的三角回文数是多少?

答案提交

这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

解法代码

cs 复制代码
#include <stdio.h>  // 包含标准输入输出库  
#include <stdlib.h> // 代码中未使用
  
int main()  
{  
    int x = 0; // 初始化累加和x为0  
  
    // 使用for循环进行无限迭代,i从1开始,每次循环i增加1  
    for (int i = 1;; i++)  
    {  
        x += i; // 将当前的i值累加到x上  
  
        // 检查累加和x是否大于20220514  
        if (x > 20220514)  
        {  
            int a = x; // 复制x的值到a,以便在不修改x的情况下进行反转操作  
            int b = 0; // 初始化b为0,用于存储a(即x)的反转数字  
  
            // 使用while循环反转a的数字,并累加到b上  
            while (a != 0)  
            {  
                b = b * 10 + a % 10; // 将a的最后一位数字加到b上,并移动b的小数点一位  
                a = a / 10;          // 移除a的最后一位数字  
            }  
  
            // 检查反转后的数字b是否与原始数字x相等(即检查x是否为回文数)  
            if (b == x)  
            {  
                printf("%d\n", x); // 如果x是回文数,则打印x  
                break;             // 并跳出循环(因为已经找到了第一个符合条件的回文数)  
            }  
        }  
    }  
  
    return 0; // 程序正常结束  
}

运行结果

相关推荐
小杍随笔18 小时前
Rust桌面GUI框架:性能优化与实战避坑指南
开发语言·性能优化·rust
二哈赛车手18 小时前
新人笔记---项目中简易版的RAG检索后评测指标(@Recall ,Mrr..)实现
java·开发语言·笔记·spring·ai
做时间的朋友。18 小时前
精准核酸检测
java·数据结构·算法
空中海18 小时前
iOS 动态分析、抓包与 Frida Hook
ios·职场和发展·蓝桥杯
格林威18 小时前
3D相机视觉检测:环境光太强,结构光点云全是噪点怎么办?
开发语言·人工智能·数码相机·计算机视觉·3d·视觉检测·工业相机
Rust语言中文社区18 小时前
【Rust日报】2026-05-02 Temper - 用 Rust 编写的 Minecraft 服务器项目发布 0.1.0 版
运维·服务器·开发语言·后端·rust
冯诺依曼的锦鲤18 小时前
从零实现高并发内存池:TCMalloc 核心架构拆解
c++·学习·算法·架构
Thomas_Lee_OR18 小时前
多Agent路径规划 LaCAM for multi-agent path finding (MAPF)
算法·路径规划·仓储机器人·mapf
一切皆是因缘际会18 小时前
可落地数字生命工程:从记忆厮杀到自我意识觉醒全链路,AGI内生智能硅基生命心智建模
人工智能·深度学习·算法·机器学习·ai·系统架构·agi
nlpming18 小时前
opencode Agent 详解
算法