C语言求同构数正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.试求指定位数的同构数序列.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/12 18:37:44
C语言求同构数正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.试求指定位数的同构数序列.

C语言求同构数正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.试求指定位数的同构数序列.
C语言求同构数
正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.
试求指定位数的同构数序列.

C语言求同构数正整数n若是它平方数的尾部,则称n为同构数.例如,6是其平方数36的尾部,76是其平方数5776的尾部,6与76都是同构数.试求指定位数的同构数序列.
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