有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放哪兒了 找到的題解裡重新定義了大實數的結構體,現場寫也不是不可以,但是恐怕會花很長很長時間 憑我的編碼水平寫這麼大 量 考點 大數比較 套模板卡了很久!是因為...