/* 若正整数n是它的平方数的尾部,则称n为守形数,又称同构数. 例如:6是其平方数36的尾部,76是其平方数5776的尾部,6和76都是守形数. 这些也是: 6^=36 25^2=625 76^2=5776 376^=141376 625^=390625 编程技巧: 1.传统的用一个计数变量count,然后循环体中一直number/10,count计数,最后的count就是位数 2.直接用log函数,位数count=(int)log10(num)+1 3.用sprintf和strlen函数,sprintf(str,"%d",num),count=strlen(str), 这种直接求长度效率肯定要低很多,但是直接用了库函数不需要自己实现, 如果需要对字符串处理的话,str还是很有价值的 */ # include <stdio.h> int quar(int x, int n) { int sum = 1; for(int i = 0; i < n; i++) { sum = sum * x; } return sum; } int main(void) { int i,n,num,pow,count; scanf("%d", &n); getchar(); //吸收回车符。 for(i = 0; i < n; i++) { count = 0; scanf("%d", &num); getchar(); //吸收回车符。 int temp = num; pow = num * num; printf("%d", pow); while(temp) { temp = temp / 10; count++; } if((pow % (quar(10, count))) == num) printf("Yes!\n"); else printf("No!\n"); } return 0; }
原文地址:http://blog.csdn.net/xu758142858/article/details/44160129