问题描述
对于正整数 n, 如果存在正整数 k使得 n=1+2+3+……+k=k(k+1)/2, 则 nn 称为三角数。例如, 66066 是一个三角数, 因为 66066=1+2+3+……+363。
如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数。例如, 66066 是一个回文数, 8778 也是一个回文数。
如果一个整数 n 既是三角数又是回文数, 我们称它为三角回文数。例如 66066 是三角回文数。
请问, 第一个大于 20220514 的三角回文数是多少?
答案提交
这是一道结果填空的题, 你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int x=0;//记录三角数
for(int i=1;;i++){//查找三角数
x+=i;
if(x>20220514){//大于20220514,验证是否为回文数
int b=x;
int a=0;
while(b!=0){//将三角数倒置放入a中储存
a=a*10+b%10;
b/=10;
}
if(a==x){//比较a是否等于x,相等说明x为三角回文数
printf("%d",x);
break;
}
a=0;//不是,重置a进入下一次验证
}
}
return 0;
}
很漂亮的验证回文数