生活随笔
收集整理的這篇文章主要介紹了
大数取模大数开平方
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大數取模
藍橋杯中經常會讓運算結果對某一個很大的數取模作為最終結果。而往往運算結果本身就是一個十分巨大的數。這時不能把運算結果直接對這個很大的數取模。實際上運算結果在程序中是多次加法得到的,只需要在每次得到部分結果時就對其進行取模運算。再相加就得到最終結果。
例如:
27/7=3...6 (27=17+10)
17/7=2...3
10/7=1...3
可見,
3=(2+1);6=(3+3)
大數開平方
大數直接開平方很難,有定理為:
- 假設位數為len的整數,開方取整后為一個lenSqrt位數。
- 當len為偶數,lenSqrt = len / 2 .
- 當len為奇數,lenSqrt = (len / 2) + 1 .
然后利用循環,從高位到地位,逐位確定其值。具體如下:
for(int pos
=0;pos
<len
;pos
++) {for(char c
='1';c
<='9';c
++) {sarr
[pos
]=c
;BigInteger pow
=new BigInteger(String
.valueOf(sarr
)).pow(2);if(pow
.compareTo(target
)==1) {sarr
[pos
]-=1;break;}}
總結
以上是生活随笔為你收集整理的大数取模大数开平方的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。