日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java高次方数尾数输出_C语言求高次方数的尾数代码解析

發布時間:2024/1/23 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java高次方数尾数输出_C语言求高次方数的尾数代码解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

求13的13次方的最后三位數。

問題分析

許多初學者看到本題最容易想到的方法就是:將13累乘13次后截取最后三位即可。但是計算機中存儲的整數有一定的范圍,超出某范圍將不能正確表示,所以用這種算法不可能得到正確的結果。實際上,題目僅要求后三位的值,完全沒有必要把13的13次方完全求出來。

算法設計

手工計算13的13次方的步驟如下:

研究乘法的規律會發現:乘積的最后三位的值只與乘數和被乘數的后三位有關,與乘數和被乘數的高位無關。利用這一規律,在計算下一次的乘積時,我們只需用上次乘積的后三位來參與運算(即在求第三次乘積時,上次的乘積2197并不需要都參與運算,只取其后三位197再次與13相乘即可)。求某數的后三位的算法用某數對1000取模。

編程過程中,將累乘得到的積存儲到變量last中,在進行下一次相乘之前先截取last的后三位再相乘,即:last%1000*13,將結果存儲到last中:last=last*x(x的值為13)%1000。 因第一次相乘時用到變量last的初值,故在定義時給last賦初值,或在參與計算之前給last賦初值1。

下面是完整的代碼:

#include

int main()

{

int i, x, y, last=1;? /*變量last保存求得的x的y次方的部分積的后三位*/

printf("輸入 x 和 y:\n");

scanf("%d %d", &x, &y);

for(i=1; i<=y; i++)? /*x自乘的次數y*/

last = last * x % 1000;? /*將last乘x后對1000取模,即求積的后三位*/

printf("最后三位數是:%d\n", last);

return 0;

}

運行結果:

linuxidc@linuxidc:~/www.linuxidc.com$ ./linuxidc.com

輸入 x 和 y :

12 12

最后三位數是:256

linuxidc@linuxidc:~/www.linuxidc.com$ ./linuxidc.com

輸入 x 和 y :

8 8

最后三位數是:216

linuxidc@linuxidc:~/www.linuxidc.com$ ./linuxidc.com

輸入 x 和 y :

13 13

最后三位數是:253

總結

以上是生活随笔為你收集整理的Java高次方数尾数输出_C语言求高次方数的尾数代码解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。