時間限制: 1000 ms 記憶體限制: 524288 kb
曾經發明了腦洞**儀與超能粒子炮的發明家 shtsc 又公開了他的新發明:超能粒子炮・改——一種可以發射威力更加強大的粒子流的神秘裝置。
超能粒子炮・改相比超能粒子炮,在威力上有了本質的提公升。它有兩個引數 n
'>
n、k'>k
,它會向每個編號為 0
'>
0 到 k
'>
k(包含兩端)的位置 i
'>i
i 發射威力為cni
mod2333
'>cinmod2333
的粒子流。
現在 shtsc 給出了他的超能粒子炮・改的引數,讓你求出其發射的粒子流的威力之和除以 2333
'>2
333 所得的餘數。
第一行乙個整數 t
'>t
表示資料組數。
之後 t
'>
t 行,每行兩個整數 n
'>
n、k'>
k,含義如題面描述。
t'>
t 行,每行乙個整數,表示其粒子流的威力之和模 2333
'>2
333 的值。
sol:想了一會以後感覺非常不可做,於是翻題解去了。。
一起膜拜這位大佬。。。
掏出他的過程設p=
2333,a
=kp,
b=k
mod
p'>p=2333, a=k/p, b=kmodp
,那麼有:
ps:最後一行第乙個f(n/p,k/p)應該改為f(n/p,k/p-1)
#include usingview codenamespace
std;
typedef
long
long
ll;inline ll read()
while
(isdigit(ch))
return (f)?(-s):(s);
}#define r(x) x=read()inline
void
write(ll x)
if(x<10
)
write(x/10
); putchar((x%10)+'0'
);
return;}
#define w(x) write(x),putchar(' ')
#define wl(x) write(x),putchar('\n')
const ll mod=2333
;const
int n=2400
;int
t;ll c[n][n],f[n][n];
inline ll lucas(ll n,ll m)
inline ll calc(ll n,ll k)
intmain()
while(t--)
return0;
}/*input
45 5
10 7
1145 14
2333233323332333 2333
output
32968
763845
*/
SHOI2015 超能粒子炮 改
設 f n k sum kc n i pmod 那麼根據盧卡斯定理我們知道 f n k sum kc times c c 0 times sum c i c 1 times sum c i c times sum c i c times sum c i sum c i times c 0 c 1 c...
SHOI2015 超能粒子炮 改
求 sum 2333 n,k leq 10 如果直接套盧卡斯還是比較容易想到分塊求解的 由 c n i c times c 可知,i p 相同的組合數另一部分分別是 i p,i p 1,i p 2.這部分可以搓到一起 令 s n k sum 具體來說,將這部分相同的部分放到一起,剩下的地方直接計算 ...
SHOI2015 超能粒子炮 改
首先我們要明確題目要我們求的是這個式子 sum kc n i 我們先從部分分看起 預處理出組合數暴力算就是了。複雜度 o n 2 由於我們要求的東西是在楊輝三角的一行,所以我們可以遞推求出改行組合數,遞推式為 c n c n m frac 證明的話就用組合數的定義式即可。複雜度 o k 這一檔對正解...