數學 高精度 JZOJ 3771 小 Z 的煩惱

2021-09-10 01:49:18 字數 1826 閱讀 7351

有n

nn個球要放到m

mm個箱子裡,有以下兩條規則:

1、若把標號為i

ii的球放進了第j

jj個盒子,那麼標號為2∗i

2*i2∗

i的球一定要在第j+1

j+1j+

1個盒子裡面(

((若j

jj2、若把標號為i

ii的球放進了第j

jj個盒子,並且k∗2

=i

k*2=i

k∗2=

i,那麼標號為k

kk的球一定要在第j−1

j-1j−

1個盒子裡面(

((若j

>1)

j>1)

j>1)

求第乙個箱子裡最多可以放多少球。

因為2

22,所以第乙個箱子裡只能放奇數編號的球。

如果第乙個箱子裡放a

aa,那麼a∗2

m−1≤

na*2^\leq n

a∗2m−1

≤n那麼我們就知道2

m2^m

2m裡可以放了,然後有

a ∗2

x(x≡

0(mo

dm),

a≡1(

mod2

),a∗

2x+m

−1

<=n

)a∗2^x(x≡0(mod\ m),a≡1(mod\ 2),a∗2^<=n)

a∗2x(x

≡0(m

odm)

,a≡1

(mod

2),a

∗2x+

m−1<=n

)所以我們每次讓n/2

m−

1n/2^

n/2m−1

,統計一遍奇數,然後每次讓n/2

mn/2^m

n/2m

,統計奇數。

因為n

nn比較大,所以我們需要用高精度。

#include

#include

#include

const

long

long p =

1e11

;const

int maxn =

1000

;int t, m, l, al;

long

long a[maxn +1]

, ans[maxn +1]

;char s[

10001];

void

init()

l = maxn;

al =0;

}void

div(

long

long d)

while

(!a[l]

&& l)

l--;}

void

countans()

int t = std::

max(l -

1, al);if

(ans[t +1]

) t++

;for

(int i =

0; i <= t; i++)if

(ans[i]

>= p)

if(ans[t +1]

) al = t +1;

else al = t;

}void

print()

printf

("\n");

}int

main()

print()

;}}

php BC math 高精度數學函式

php 為任意精度數學計算提供了二進位制計算器 binary calculator 它支援任意大小和精度的數字,以字串形式描述。自 php 4.0.4 以來,libbcmath 都繫結在 php 內部。本擴充套件不需要其它外部庫的支援。本類函式僅在 php 編譯時配置了 enable bcmath ...

JZOJ 4 8 2434 開關燈泡 高精度

description 乙個房間裡有n盞燈泡,一開始都是熄著的,有1到n個時刻,每個時刻i,我們會將i的倍數的燈泡改變狀態 即原本開著的現將它熄滅,原本熄滅的現將它點亮 問最後有多少盞燈泡是亮著的。input 乙個數n output m,表示最後有m盞是亮著的 sample input 5sampl...

數學之高精度(續)於2020 7 29

考點 高精度加法 注意輸出格式,輸出錯誤三次 沒好好看題 考點 實數的高精度冪 說真的這有點坑人,因為沒想過寫實數的高精度 你把double放哪兒了 找到的題解裡重新定義了大實數的結構體,現場寫也不是不可以,但是恐怕會花很長很長時間 憑我的編碼水平寫這麼大 量 考點 大數比較 套模板卡了很久!是因為...