import java.util.Scanner;
public class GetSelfConttrolledNum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int count = getSelfControlledNum(num);
System.out.println(count);
}
private static int getSelfControlledNum(int num) {
int number = 0;
for (int i = 2; i < num; i++) {
if(i<9){
int a = i*i;
if(a%10==i)
number++;
}
else if(i<99){
int a = i*i;
int b = a-a/100*100;
if(b==i)
number++;
}else if(i<999){
int a = i*i;
int b = a-a/1000*1000;
if(b==i)
number++;
}else if(i<9999){
int a = i*i;
int b = a-a/10000*10000;
if(b==i)
number++;
}
}
return number+2;
}
}
自守数:
如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数(如果该数是一位数,该数平方的个位和该数相同就是自守数,比如0,1,5;如果该数是两位数,就要看结果的后两位是否与该数相同)。
定义:自然数n称为p-进制下的自守数当且仅当 n(n-1)能被p^m整除其中m=1+[log_p n]。取p=10时即为此自守数的定义。
0和1的平方的个位数仍然是0和1(对任何p进制),称为平凡自守数。
注意:当p为素数时,只有平凡自守数。
显然,5和6是一位自守数(5x5=25 6x6=36)