利用數(shù)據(jù)類型轉(zhuǎn)換講數(shù)字問題變成字符串比對。將數(shù)字平方讓后轉(zhuǎn)換成字符串然后利用索引做切片看與數(shù)字本身轉(zhuǎn)換成字符串的量是否相等。這個方法充分利用了python的內(nèi)置豐富的內(nèi)置函數(shù)。
我們提供的服務有:成都網(wǎng)站建設、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、云夢ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的云夢網(wǎng)站制作公司
隨機輸入若干個不超過2位的正整數(shù)(輸入-1表示輸入結(jié)束),找出其中所有同構(gòu)數(shù)并排序輸出。(正整數(shù)n若是它平方數(shù)的尾部,則稱n為同構(gòu)數(shù)。如5的平方數(shù)是25,且5是25的尾部,那么5就是一個同構(gòu)數(shù)。同理,25的平方為625,25也是同構(gòu)數(shù))。
簡介
輸入時要求首先判斷輸入數(shù)位數(shù)(1-2位)是否正確,判斷輸入內(nèi)容是否是數(shù)字,提示:判斷一個字符串是否是數(shù)字字符可用字符串的isdigit方法然后判斷是否是同構(gòu)數(shù)。
輸出的同構(gòu)數(shù)要求從小到大排序,結(jié)果顯示在一行,各同構(gòu)數(shù)間空格分隔。提示:排序可用列表的sort方法。
1、首先在電腦中,打開visual C++ 6.0-文件-新建-文件-C++ Source File。
2、輸入預處理命令和主函數(shù),如下圖所示。
3、定義變量并輸入數(shù)值,如下圖所示。
4、接著計算a是否是完美數(shù),如下圖所示。
5、最后點擊頁面上方的運行,如下圖所示,就完成了。
#include
inttgs(intx)
{
intm1,n,a,b;
m1=x;
n=x*m1;
while(m1)
{
a=m1%10;
b=n%10;
if(a!=b)break;
m1=m1/10;
n=n/10;
}
returnm1==0;
}
intmain()
{
intx;
scanf("%d", x);
if(tgs(x))printf("%d是一個同構(gòu)數(shù)",x);
elseprintf("%d不是一個同構(gòu)數(shù)",x);
return0;
}。
擴展資料
C語言 同構(gòu)數(shù)的算法
“同構(gòu)數(shù)”是指這樣的整數(shù):它恰好出現(xiàn)在其平方數(shù)的右端。
如:376*376=141376。請輸出10000以內(nèi)的全部“同構(gòu)數(shù)”。
算法分析:
1.求出1-10000之間每個數(shù)的位數(shù)(即這個數(shù)是幾位數(shù))。設這個數(shù)是i.//用for循環(huán)實現(xiàn)。
2.再求出每個數(shù)的平方值,提取出最右端對應位數(shù)的數(shù)值出來。//用取模%法實現(xiàn)。
如369是個三個數(shù),它的平方是136161,用取模%法提取出最右三位數(shù)字161,即136161%1000=161。
3.最后判斷 i 與右端數(shù) 是否相等,相等即為同構(gòu)數(shù)。
#include stdio.h
int main()
{
long i,j,n=0,k=10;/*i為測試的數(shù)字,就是1-10000,n用來記錄同構(gòu)數(shù)的次數(shù),其他的能不能理解就看你了*/
for(i=1;i=10000;i++)
{
if(i==k)
k=k*10;
j=i*i;
if(j%k==i)
n++;
}
printf("1-10000內(nèi)同構(gòu)數(shù)的個數(shù)為%d\n",n);
return 0;
}
已在VC++6.0下調(diào)試通過。
你再添加若是同構(gòu)數(shù),函數(shù)返回1;否則返回0就可以了