#include <iostream> using namespace std; bool is_zss(int n)//判断是否为自受术 { int nr=n*n,a=0,n_copy=n;//拷贝一份 //首先判断n是几位数,用a表示 do {n_copy=n_copy/10; a++;} while(n_copy); int t=0; for (int i=0;i<a;i++) { if (n%10==nr%10) t++; n=n/10; nr=nr/10; } if (t==a) return 1; else return 0; } int main () { int n; while(cin>>n) {int num=0; for (int i=0;i<=n;i++)//o 和1也是自受术啊。 { if(is_zss(i)) num++; } cout<<num<<endl;} }