HDU4704
- 题目要求s1+s2+s3+...+sn;si表示n划分i个数的n的划分的个数,如n=4,则s1=1,s2=3
- 假设An=s1+s2+s3+...+sn;
- 对于n可以先划分第一个数为n,n-1,n-2,...,1,则容易得出An=A0+A1+A2+A3+...+A(n-1);
- =>A(n+1)=A0+A1+A2+A3+...+An =>An=2^(n-1);
- 由于n非常大,所以这里要用到费马小定理:a^(p-1)%p == 1%p == 1;p为素数
- 所以2^n%m == ( 2^(n%(m-1))*2^(n/(m-1)*(m-1)) )%m == (2^(n%(m-1)))%m * ((2^k)^(m-1))%m == (2^(n%(m-1)))%m;k=n/(m-1)

浙公网安备 33010602011771号