展开<br><img><br><h3>说明</h3><br>正整数n若是其平方数的尾部,则称n为同构数。例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数。下面的程序求解不超过10000的所有同构数。<br>已知一位的同构数有三个:1,5,6,因此二位数的同构数的各位数字只可能是1,5,6,这三个数字。依次类推,更高位数同构数的个位数字也只可能是1,5,6,这三个数字。<br>下面程序的处理思路是:对不超过10000的每一个整数 a,判断其个位数字,若为1,5,6,则将 a 转换为字符串 as ,然后对 a 进行平方运算,并截取其尾部与 as 长度相等的若干字符形成字符串后与 as 比较,根据它们相等与否来断定 a 是否为同构数。<br>#include#include#includeint myitoa(int, char *); //整数转换为字符串 //*right 取得指定字符串尾部长度为length的子串,返回所得子串的首字符指针 char *right(char *,int length); int main(){&#9; int a,t;&#9; int len;&#9; char as[10] ,rs[20];&#9; printf("[1,10000]内的同构数:\n");&#9; for(a=1;a