自守数:
- 方式一:同一个数,多位同时判断
#include<stdio.h>
int main() {
int n, sum = 0;
scanf("%d", &n);
while (n > 0) {
int p=n*n;
if (p % 10 == n ||p % 100 == n||p % 1000 == n||p % 10000 == n){
sum++;
}
n--;
}
printf("%d\n", sum+1);
return 0;
}
- 无符号数
2.方法二:一个一个取出来判断
#include <stdio.h>
int isVal(int a)
{
int Sqr = a * a;
if(!a)
return 1;
while(a)
{
if(Sqr%10 == a%10)
{
Sqr /= 10;
a /= 10;
}
else
return 0;
}
return 1;
}
int main()
{
int n, i, num;
while(scanf("%d", &n) != EOF)
{
num = 0;
for(i = 0; i <= n; ++i)
{
if(isVal(i))
++num;
}
printf("%d\n", num);
}
return 0;
}
方法三:
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int count = 0;
for (int i = 0; i <= n; i++) {
int j = 1;
int sqr = i * i - i;
int k = i;
while (k != 0) {
k /= 10;
j *= 10;
}
if (sqr % j == 0)
count++;
}
printf("%d\n", count);
}
return 0;
}