【30天蓝桥训练】Day06

头发你好自为之 2023-03-10 22:20:11

1.三角回文数

题目:对于正整数 �n, 如果存在正整数 �k 使得 �=1+2+3+⋯+�=�(�+1)2n=1+2+3+⋯+k=2k(k+1)​, 则 �n 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+⋯+36366066=1+2+3+⋯+363 。

如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。

如果一个整数 �n 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。

请问, 第一个大于 20220514 的三角回文数是多少?

思路:先确定k,可以乱尝试一下,第一个满足k*(k+1)>20220514的数,然后依次判断,找到第一个满足回文数的输出。

解题代码:

#include <iostream>
using namespace std;
bool check(string s)
{
  int l=0,r=s.size()-1;
  while(l<r)
  {
    if(s[l++]!=s[r--]) return false;
  }
  return true;
}
int main()
{
  int k;
  int num=0;
  for(k=6500;;k++)
  {
    num=k*(k+1)/2;
    //cout<<num<<endl;
    if(num>20220514)
    {
      if(check(to_string(num)))
      {
        cout<<num<<endl;
        return 0;
      }
    }
  }
  return 0;
}

 

...全文
8 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
发帖
高校算法学习社区

3.2w+

社区成员

和众多高校算法内卷分子,一起学习和交流算法那。浓郁的算法交流氛围,拒绝躺平,有效内卷。加入我们,私信我拉你入核心内卷群。
算法数据结构leetcode 个人社区
社区管理员
  • 执 梗
  • Dream-Y.ocean
  • ღCauchyོꦿ࿐
加入社区
帖子事件
创建了帖子
2023-03-10 22:20
社区公告

 刷题!