HDU4704

  1. 题目要求s1+s2+s3+...+sn;si表示n划分i个数的n的划分的个数,如n=4,则s1=1,s2=3 
  2. 假设An=s1+s2+s3+...+sn; 
  3. 对于n可以先划分第一个数为n,n-1,n-2,...,1,则容易得出An=A0+A1+A2+A3+...+A(n-1); 
  4. =>A(n+1)=A0+A1+A2+A3+...+An =>An=2^(n-1); 
  5. 由于n非常大,所以这里要用到费马小定理:a^(p-1)%p == 1%p == 1;p为素数 
  6. 所以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)
posted @ 2016-11-10 20:32  XiaoLuoHe  阅读(165)  评论(0)    收藏  举报