首先,需要告诉一下水仙花数是啥呀
然后就碎给定一个区间,要求求区间内的水仙花数有多少个,感觉在某个付费专栏看到过,求一发兄弟们
循环输入。每组输入为两个数 $l$ 和 $r$,要求输出 $[l, r]$ 范围内的所有水仙花数。没有的话输出 no。当没有任何输入时,程序结束。其中,水仙花数的定义如下:
1)十进制位数有三位;
2)每一位的立方和等于它本身;
难度:🔴🔴⚪⚪⚪
n % 10
;n / 10 % 10
;n / 100 % 10
;int n, m;
int all[1000];
int val[1000];
int main() {
all[99] = 0;
for (int i = 100; i <= 999; ++i) {
int v0 = i / 100; // (1)
int v1 = i / 10 % 10; // (2)
int v2 = i % 10; // (3)
val[i] = (i == v0v0v0 + v1v1v1 + v2v2v2) ? 1 : 0; // (4)
all[i] = all[i - 1] + val[i]; // (5)
}
while (scanf("%d %d", &n, &m) != EOF && n) {
int v = all[m] - all[n - 1]; // (6)
if (!v) {
printf("no\n");
}
else {
int hasoutput = 0;
for (int i = n; i <= m; ++i) {
if (val[i]) {
if (hasoutput) { // (7)
printf(" ");
}
printf("%d", i);
hasoutput = 1;
}
}
puts("");
}
}
return 0;
}
```