syzoj上的题,收货很多,orz天天学长

原题:

Asm.Def奉命组建一支m人的特种作战小队前往圣迭戈。他有n名候选人,可以在其中任意挑选。由于小队中每个人都有独特的作用,所以次序不同的两种选法被认为是不同的方案。由于方案数可能非常大,Asm.Def只需要知道它模p的值。

100%:n<=10^18,m<=10^5,p<=10^18

 

很明显就是求排列……

然而n<=10^18用longlong乘的话会炸

用高精度的话取模会非常不好搞,而且常数似乎也不滋瓷

syzoj可以直接查看别人代码,然后就看到了这么个黑科技:

 1 LL f(LL x,LL y)
 2 {
 3     LL tmp=0;
 4     while(y)
 5     {
 6         if(y&1)
 7             tmp=(tmp+x)%p;
 8         y=y>>1;
 9         x=(x<<1)%p;
10     }
11     return tmp;
12 }
View Code

相关文章:

  • 2021-11-16
  • 2022-12-23
  • 2021-11-12
  • 2022-02-14
  • 2021-12-03
  • 2021-09-27
  • 2022-12-23
猜你喜欢
  • 2021-05-29
  • 2022-12-23
  • 2021-08-22
  • 2022-12-23
  • 2021-05-16
相关资源
相似解决方案