level 6
我的想法很简单,直接用(k*k-k)%pow(10, n)判断,n是k的位数,比如5,就算(5*5-5)%pow(10, 1),等于零就成立
2022年09月25日 03点09分
5
level 6
#include <stdio.h>#
include
int jud(int i){
if (i < 0)
return -1;
else if (i == 0)
return 0;
else if (i < 10)
return 1;
else
return jud(i / 10) + 1;
}
int main(){
int a, b, i;
scanf("%d %d", &a, &b);
if (b < a){
printf("illegal input");
return 1;
}
for (i = a; i <= b; i++){
int n = jud(i);
if ((i * i - i) % (int)(pow(10, n)) == 0)
printf("%d\n", i);
}
return 0;
}
2022年09月25日 03点09分
6
level 6
也可以直接使用itoa()将数转换为字符串直接在末尾比对
2022年09月25日 03点09分
7
itoa不是标准库函数,建议使用sprintf
2022年09月25日 05点09分
@◎御坂雷丘◎ 但是itoa不在标准库中,是微软自己的扩展。大多数OJ系统是不认的
2022年09月25日 11点09分