题解 | #自守数#
自守数
https://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e
#include <stdio.h> #include <stdlib.h> int main() { int n,k=0,syl,i; scanf("%d",&n); for(i=0;i<=n;i++) { syl=(i*i)-i; if(i<10&&syl%10==0) { k++; continue; } else {if(i<100&&i>10&&syl%100==0) {k++; continue; } else {if(i<1000&&i>100&&syl%1000==0) {k++; continue; } else{if(i<10000&&i>1000&&syl%1000000==0) {k++; continue; } else { if(i==10000) {k++; continue; } } } } } } printf("%d",k); } 因为自守数的平方的尾数等于该数自身,因此利用该性质结合自守数的大小范围来判定一个数是不是自守数,以小于10、10到100、100到1000、1000到10000(不含10000),10000作为区间来判定自守数;区间大小是判定自守数的关键。#自守数#