五道程序算數(shù)題

此文寫于2013年5月20日。

全部為當(dāng)初在學(xué)校自己寫的,尤為對(duì)于在校學(xué)生,認(rèn)真看是能看懂的。

題目1:古希臘人認(rèn)為因子的和等于它本身的數(shù)是一個(gè)完全數(shù)(自身因子除外),例如28的因子是1、2、4、7、14,且1+2+4+7+14=28,則28是一個(gè)完全數(shù),編寫一個(gè)程序求2-1000內(nèi)的所有完全數(shù)。

#include "stdio.h"

#include "math.h"

main()

{

int mymath,i,inputmath,a,b;

for(i=2;i<=1000;i++)

{

inputmath=1;

b=sqrt(i);

for(mymath=2;mymath<=b;mymath++)

{

if(i%mymath==0)

{

a=i/mymath;

inputmath=inputmath+a+mymath;

}

}

if(inputmath==i)

{

printf("%d\t",inputmath);

}

}

}

題目2:一輛以固定速度行駛的汽車,司機(jī)在上午10點(diǎn)看到里程表上的讀數(shù)是一個(gè)對(duì)稱數(shù)(即這個(gè)數(shù)從左向右讀和從右向左讀是完全一樣的),為95859。兩小時(shí)后里程表上出現(xiàn)了一個(gè)新的對(duì)稱數(shù)。問該車的速度是多少?新的對(duì)稱數(shù)是多少?

#include "stdio.h"

#include "math.h"

main(

{

long i,a[6],b,c;

for(i=95860;i<1000000;i++)

{

if(i<100000)

{

a[0]=i/10000;

a[1]=i/1000%10;

a[2]=i/100%10;

a[3]=i%100/10;

a[4]=i%10;

b=a[4]*10000+a[3]*1000+a[2]*100+a[1]*10+a[0];

if(b==i)

{

c=(i-95859)/2;

printf("新的對(duì)稱數(shù)是:%d\n",i);

printf("速度:%d\n",c);

break;

}

}

}

}

題目3:自守?cái)?shù)是指一個(gè)數(shù)的平方的尾數(shù)等于該數(shù)自身的自然數(shù)。例如:

25^2=625 76^2=5776 9376^2=87909376

請(qǐng)求出200000以內(nèi)的自守?cái)?shù)

參考結(jié)果:

0 1 5 6 25 76 376 625 9376 90625 109376

#include "stdio.h"

#include "math.h"

main()

{

long i,a;

for(i=0;i<=200000;i++)

{

if(i<10)

{

a=i*i%10;

if(i==a)

{

printf("%ld\t",i);

}

}

else if(i<100)

{

a=i*i%100;

if(i==a)

{

printf("%ld\t",i);

}

}

else if(i<1000)

{

a=i*i%1000;

if(i==a)

{

printf("%ld\t",i);

}

}

else if(i<10000)

{

a=i*i%10000;

if(i==a)

{

printf("%ld\t",i);

}

}

else if(i<100000)

{

a=i*i%100000;

if(i==a)

{

printf("%ld\t",i);

}

}

else

{

a=i*i%1000000;

if(i==a)

{

printf("%ld\t",i);

}

}

}

}

題目4:一個(gè)自然數(shù)的七進(jìn)制表達(dá)式是一個(gè)三位數(shù),而這個(gè)自然數(shù)的九進(jìn)制表示也是一個(gè)三位數(shù),且這兩個(gè)三位數(shù)的數(shù)碼順序正好相反,求這個(gè)三位數(shù)。

#include "stdio.h"

main()

{

int i,a,b,x[3],c,y[3],d,e;

for(i=81;i<500;i++)

{

e=i;

for(a=0;a<3;a++)

{

x[a]=e%7;

e=e/7;

}

b=x[2]*100+x[1]*10+x[0];

for(d=0;d<3;d++)

{

y[d]=b%9;

b=b/9;

}

c=y[0]*100+y[1]*10+y[2];

if(x[2]==y[0]&&x[1]==y[1]&&x[0]==y[2])

{

printf("%d\t%d\t%d\n",x[2],x[1],x[0]);

printf("%d\t%d\t%d\n",y[2],y[1],y[0]);

printf("%d\n",c);

break;

}

}

}

題目5:帶分?jǐn)?shù)

100 可以表示為帶分?jǐn)?shù)的形式:100 = 3 + 69258 / 714

還可以表示為:100 = 82 + 3546 / 197

注意特征:帶分?jǐn)?shù)中,數(shù)字1~9分別出現(xiàn)且只出現(xiàn)一次(不包含0)。

類似這樣的帶分?jǐn)?shù),100 有 11 種表示法。

題目要求:

從標(biāo)準(zhǔn)輸入讀入一個(gè)正整數(shù)N (N<1000*1000)

程序輸出該數(shù)字用數(shù)碼1~9不重復(fù)不遺漏地組成帶分?jǐn)?shù)表示的全部種數(shù)。

注意:不要求輸出每個(gè)表示,只統(tǒng)計(jì)有多少表示法!

例如:

用戶輸入:

100

程序輸出

11

再例如:

用戶輸入:

105

程序輸出:

6

#include "stdio.h"

int charnum(int i,int j,int k)

{

int a,x[10],f;

for(f=0;f<10;f++)

{

x[f]=0;

}

while(i)

{

a=i%10;

x[a]++;

if(x[a]>1)

{

return 0;

}

i=i/10;

}

while(j)

{

a=j%10;

x[a]++;

if(x[a]>1)

{

return 0;

}

j=j/10;

}

while(k)

{

a=k%10;

x[a]++;

if(x[a]>1)

{

return 0;

}

k=k/10;

}

if(x[0]>0)

{

return 0;

}

for(f=1;f<10;f++)

{

if(x[f]==0)

{

return 0;

}

}

return 1;

}

void main()

{

int n,i,j,k,count;

printf("請(qǐng)輸入n:");

scanf("%d",&n);

count=0;

for(i=1;i<=n-1;i++)

{

for(k=1;k<=9999;k++)

{

if(i!=k)

{

j=(n-i)*k;

if(charnum(i,j,k)==1)

{

count++;

printf("\n%d=%d+%d/%d",n,i,j,k);

}

}

}

}

printf("\n%d的帶分?jǐn)?shù)的表示法有%d種\n",n,count);

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容