新聞中心
C語(yǔ)言求同構(gòu)數(shù)
1、算法分析:
專注于為中小企業(yè)提供成都網(wǎng)站制作、成都做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)龍?zhí)睹赓M(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
對(duì)指定范圍內(nèi)的每一個(gè)整數(shù)a,求出其平方,判斷a是否是其平方的尾部,通常有以下方法:
通過字符串子串比較找出同構(gòu)數(shù)。
為了求更高位數(shù)的同構(gòu)數(shù),可應(yīng)用同構(gòu)數(shù)的以下性質(zhì):一個(gè)m位同構(gòu)數(shù)的尾部m-1位數(shù)也是一個(gè)同構(gòu)數(shù)。道理很簡(jiǎn)單
,a是一個(gè)m位數(shù),a的平方數(shù)尾部的m-1位僅由a尾部的m-1位決定而與a的最高位無(wú)關(guān)。
易知一個(gè)同構(gòu)數(shù)有三個(gè):1,5,6,則二位同構(gòu)數(shù)的個(gè)位數(shù)字只可能是1,5,6這三個(gè)數(shù)字。
根據(jù)這一思路,我們可應(yīng)用遞推求出多位同構(gòu)數(shù)串。
2.求指定區(qū)間內(nèi)的同構(gòu)數(shù)
程序代碼如下:
#includestdio.h
#includestdlib.h
#includestring.h
char *right(char *ms,int len); /*截取一個(gè)字符串尾部長(zhǎng)為len個(gè)字符的子串*/
void main()
{
long a;
int len;
char as[10];
char ms[20];
printf("求[1,10000]中的同構(gòu)數(shù):\n");
for(a=1;a=10000;a++)
{
ultoa(a,as,10); /*數(shù)a轉(zhuǎn)換為字符串,存入as*/
len=strlen(as);
ultoa(a*a,ms,10);
if(strcmp(as,right(ms,len))==0) /*比較字符串a(chǎn)s與ms長(zhǎng)為len的子串是否相等*/
printf("%s 其平方為 %s\n",as,ms); /*相等就是同構(gòu)數(shù),輸出結(jié)果*/
}
}
char *right(char *ms,int len) /*截取字符串尾部長(zhǎng)為len子串的函數(shù)*/
{
int i,j;
for(i=0;i(signed)strlen(ms);ms++);
for(j=0;jlen;j++,ms--);
return ms;
}
C語(yǔ)言編程 自定義判斷同構(gòu)數(shù)的函數(shù)
int fun(int x)
{
int a,b=10,c=0;
a=x;
while(a/10!=0){b*=10;a/=10;} /*判斷x是幾位數(shù)*/
a=x*x;
c=(a%b==x)? 1:0;
return c;
}
怎樣用c語(yǔ)言判斷一個(gè)數(shù)是否是同構(gòu)數(shù)?
1、首先在電腦中,打開visual C++ 6.0-文件-新建-文件-C++ Source File。
2、輸入預(yù)處理命令和主函數(shù),如下圖所示。
3、定義變量并輸入數(shù)值,如下圖所示。
4、接著計(jì)算a是否是完美數(shù),如下圖所示。
5、最后點(diǎn)擊頁(yè)面上方的運(yùn)行,如下圖所示,就完成了。
標(biāo)題名稱:同構(gòu)函數(shù)c語(yǔ)言 同構(gòu)數(shù) c++語(yǔ)言程序
網(wǎng)站URL:http://fisionsoft.com.cn/article/doggcei.html