这天小明正在学数数。他突然发现有些正整数的形状像一座“山”,比如1234565321,145541,它们左右对称(回文)且数位上的数字先单调不减,后单调不增。小明数了很久也没有数完,他想让你告诉他在区间
时间: 2024-03-23 12:43:40 浏览: 95
一个简单的整数问题2(树状数组:区间查询&&区间修改)
好的,我可以提供一个 C 语言代码示例,用于判断一个区间内的所有“山形数”并输出它们的值。具体实现如下:
```c
#include <stdio.h>
int is_mountain_num(int num) {
char str[20];
int len = sprintf(str, "%d", num);
int i, j;
for (i = 0, j = len - 1; i < j; i++, j--) {
if (str[i] != str[j]) {
return 0;
}
}
for (i = 1; i < len; i++) {
if (str[i] < str[i-1]) {
return 0;
}
}
for (i = len-2; i >= 0; i--) {
if (str[i] > str[i+1]) {
return 0;
}
}
return 1;
}
int main() {
int low, high;
printf("请输入区间的下界和上界:");
scanf("%d %d", &low, &high);
printf("区间 [%d, %d] 内的山形数有:\n", low, high);
int i;
for (i = low; i <= high; i++) {
if (is_mountain_num(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
```
代码中的 `is_mountain_num` 函数用于判断一个正整数是否是“山形数”,如果是则返回 1,否则返回 0。在 `main` 函数中,我们首先输入区间的下界和上界,然后对于区间内的每个数字,调用 `is_mountain_num` 函数判断是否是“山形数”,如果是则输出它的值。
阅读全文