写在前面:这里是小王成长日志,一名在校大学生,想在学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人。欢迎关注与留言。
题目:
题目链接:https://www.dotcpp.com/oj/problem1434.html
题目 1434: [蓝桥杯][历届试题]回文数字
时间限制: 1Sec 内存限制: 128MB 提交: 6928 解决: 2895
题目描述
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
C语言解法
和普通的回文数差不多 多了一个判断条件
#include <stdio.h>
int main()
{
int n, count = 0, res = 0, flag = 0,temp;
scanf("%d", &n);
for (long int i = 10000; i <= 999999; i++)
{
temp=i;
count = 0;
res = 0;
while (temp != 0)
{
count += temp % 10;
res = res * 10 + temp % 10;
temp /= 10;
}
if (res == i && count == n)//注意此处的判断!!
//所以我们必须要使用一个临时变量去代替i进行取位操作
{
printf("%ld\n", i);
flag++;
}
}
if (flag == 0)
printf("-1\n");
return 0;
}
都看到这里了,各位哥哥姐姐叔叔阿姨给小王点个赞 关个注 留个言吧,和小王一起成长吧,你们的关注是对我最大的支持。
有事没事进来看看吧 : 小王的博客目录索引
C语言专栏看这 : C语言学习专栏
如果以上内容有任何不准确或遗漏之处,或者你有更好的意见,就在下面留个言让我知道吧-我会尽我所能来回答。