999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大數乘方 趣味編程

2009-03-14 06:59:48郭天魁
新媒體研究 2009年4期

[摘要]針對計算機精度位數的限制,編程制作乘方計算器工具,可以精確計算底數在10100以內,指數在108以內,結果在101000以內非負整數的乘方。

[關鍵詞]大數乘方 編程

中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0220068-01

在歷屆的數學競賽里,總會出現一些較大數字的乘方運算,比如22005-22004。雖然這些題目都有巧妙的方法可以很快的得到答案,但無法把這些乘方運算化為準確的數字。競賽后想用家用電腦驗證,卻因為數字太大超出計算范圍而無法計算。

算法:用初值1逐次乘輸入的底數,一共乘指數次,就是得數。

因為電腦算多位數之間的乘法是很慢的,而且如果得數很大還會受位數限制,所以我就把底數按位分成很多一位數,把每次做乘法后的結果也按位分成很多一位數,然后將這些一位數兩兩相乘,加到結果中相應的各位上,然后如果某一位超過9,就留下它的個位并把十位及以后的數字加到后一位去(進位)。

比如16*16,6*6=36,1*6=6,6*1=6,1*1=1,結果為1,(6+6=)12,36。個位進3,結果變為1,15,6。十位進1,得到2,5,6。

256*16,6*6=36,5*6=30,6*1=6,5*1=5,2*6=12,2*1=2,結果為2,(12+5=)17,(30+6=)36,36,個位進3,結果變成2,17,39,6。十位進3,變成2,20,9,6,百位進2,變成4,0,9,6。

比如算22008,輸入2-2008,回車后不到1秒鐘就會打印出結果:

29,392,145,799,020,915,820,360,529,950,148,658,790,971,333,173,470,597,132,227,654,062,739,616,291,644,680,034,730,482,849,702,560,509,912,216,694,758,079,047,000,246,245,398,094,216,484,503,842,717,866,321,546,017,277,221,199,943,680,176,327,461,949,451,487,085,805,309,456,252,478,664,093,558,693,475,421,170,513,158,666,359,386,616,551,679,118,889,574,095,089,825,179,039,567,782,281,258,040,824,405,166,424,107,240,700,021,377,434,209,148,110,825,999,078,639,302,784,109,824,695,476,896,212,613,634,081,852,488,010,690,884,578,129,204,889,342,821,483,040,517,575,643,751,434,792,922,414,912,394,467,695,078,935,531,662,069,192,598,956,042,024,980,981,047,457,429,185,377,388,949,433,859,975,257,289,323,374,605,954,282,310,600,673,952,044,911,495,373,010,647,749,329,399,156,163,119,321,894,151,520,256。

另外的一些數字也經過驗證得到了正確答案,比如

甚至可以算出23000,時間都在一兩秒之內。

這樣,以后考試時能夠用簡便的計算來求解,考試后也能用家用電腦進行窮舉驗證,算出答數了。

附程序(已在VC環境下調試驗證通過):

#include<stdio.h>

#include<string.h>

int main(){

/**********定義,計算結果在1000位以下**********/

long int a[1000],b[100],c,a1[1000],i,j,k,s,m;

char ch;

FILE *in;

in=fopen("POW.txt","w");

/**********輸入底數,不超過100位**********/

for(s=0;;s++){

ch=getchar();

b[s]=ch-48;

if(!(b[s]>-1&&b[s]<10)){

b[s]=0;

break;

}

}

/**********輸入指數,不超過8位**********/

scanf("%ld",&c);

/**********將結果初始化為1**********/

a[0]=1;

for(i=1;i<1000;i++)a[i]=0;

/**********共乘指數次**********/

for(i=0;i<c;i++){

/**********預備**********/

for(j=0;j<1000;j++){

a1[j]=a[j];

}

for(j=0;j<1000;j++){

a[j]=0;

}

/**********將分解開來的一位數兩兩相乘,加到結果的各位上**********/

for(j=0;j<1000;j++){

for(k=s-1;k>-1;k--){

a[j+s-1-k]=a[j+s-1-k]+a1[j]*b[k];

}

}

/**********進位**********/

m=0;

for(j=0;j<1000;j++){

a[j]+=m;

m=(a[j]-a[j]%10)/10;

a[j]-=m*10;

}

}

/**********因為s接下來要充當分隔符,重置**********/

s=1;

/**********打印在屏幕上**********/

k=0;

for(i=999;i>0;i--){

J=a[i];

if(a[i]!=0&&k==0){k=1;s=2-(i%3);}

if(k==1){printf("%d",(int)j);s++;}

if(s%3==0)printf(",");

}

Printf("%d",a[0]); printf(" ");

/*如果想將結果打印在文件里,可以把這段改為:for(i=999;i>0;i--){

j=a[i];

If(a[i]!=0&&k==0){k=1;s=2-(i%3);}

if(k==1){fprintf(in,"%d",(int)j);s++;}

if(s%3==0)fprintf(in,",");

}fprintf(in,"%d",a[0]);

Fprintf(in," "); */

fclose(in);

return(0);

}

參考文獻:

[1]《聰明在于勤奮 天才在于積累》,華羅庚著,中國少年兒童出版社,P118-119.

[2]《C程序設計》,譚浩強著,清華大學出版社.

作者簡介:

郭天魁,男,漢,浙江杭州,杭州建蘭中學,主要研究方向:程序綜合設計與數學證明。

主站蜘蛛池模板: 精品精品国产高清A毛片| 色天天综合| 精品国产美女福到在线直播| 日本三区视频| 动漫精品中文字幕无码| 亚洲成A人V欧美综合天堂| 国产一区二区福利| 中文字幕亚洲乱码熟女1区2区| 欧美成人日韩| 一区二区日韩国产精久久| 熟女成人国产精品视频| 亚洲色图另类| 一级一级一片免费| 91久久偷偷做嫩草影院| 国产精品无码一二三视频| 国产欧美一区二区三区视频在线观看| 狼友视频国产精品首页| 亚洲第一精品福利| 中文字幕2区| 国产三级国产精品国产普男人| 国产精品男人的天堂| 欧美日韩成人在线观看 | 欧美在线网| 不卡无码网| 日本a级免费| 日韩午夜福利在线观看| av在线5g无码天天| 9丨情侣偷在线精品国产| 美女内射视频WWW网站午夜| 一区二区在线视频免费观看| 成年人久久黄色网站| 亚洲无码精彩视频在线观看| 国产一级妓女av网站| 台湾AV国片精品女同性| 伊人久综合| 国产成人h在线观看网站站| 国产美女自慰在线观看| 欧美色香蕉| 青草娱乐极品免费视频| 免费无码一区二区| 天堂成人av| 国产亚洲精品91| 亚洲AV无码不卡无码| 精品国产乱码久久久久久一区二区| 最近最新中文字幕在线第一页 | 污污网站在线观看| 亚洲欧洲日本在线| 欧美精品在线看| 国产夜色视频| 久久国产高清视频| 日韩a级片视频| 婷婷午夜影院| 性网站在线观看| 国产日韩AV高潮在线| 一本二本三本不卡无码| 国产精品成人久久| 国产成人精品一区二区秒拍1o| 又粗又大又爽又紧免费视频| 欧美国产日产一区二区| 国产亚洲欧美在线视频| 国产成人精品一区二区三区| 亚洲无线一二三四区男男| 欧美人人干| 色婷婷视频在线| 成人午夜久久| 久久综合久久鬼| 美女潮喷出白浆在线观看视频| 91久久国产热精品免费| 怡红院美国分院一区二区| 亚洲天堂视频在线免费观看| 欧美另类第一页| 香蕉国产精品视频| 高清亚洲欧美在线看| 日韩欧美中文亚洲高清在线| 欧美a级在线| 亚洲最新地址| 欧美国产视频| 国内a级毛片| 日本妇乱子伦视频| 久久中文无码精品| 国产美女在线免费观看| 精品色综合|