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