C语言求同构数正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6

问题描述:

C语言求同构数
正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.
试求指定位数的同构数序列.
1个回答 分类:综合 2014-10-27

问题解答:

我来补答
1、算法分析:
对指定范围内的每一个整数a,求出其平方,判断a是否是其平方的尾部,通常有以下方法:
通过字符串子串比较找出同构数.
为了求更高位数的同构数,可应用同构数的以下性质:一个m位同构数的尾部m-1位数也是一个同构数.道理很简单
,a是一个m位数,a的平方数尾部的m-1位仅由a尾部的m-1位决定而与a的最高位无关.
易知一个同构数有三个:1,5,6,则二位同构数的个位数字只可能是1,5,6这三个数字.
根据这一思路,我们可应用递推求出多位同构数串.
2.求指定区间内的同构数
程序代码如下:
#include
#include
#include
char *right(char *ms,int len); /*截取一个字符串尾部长为len个字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,10000]中的同构数:\n");
for(a=1;a
 
 
展开全文阅读
剩余:2000