数学的东西(BZOJ1951)

#include <cstdio>
#define LL long long 

  LL finmo=999911659;
  LL fac[4][40001],inv[4][40001];
  LL tmp[4],rev[4];
  LL n,g,x,y;
  const LL mo[4]={2,3,4679,35617};

  LL qpow(LL bas,LL pow,LL mo){
      LL ret=1;
      for (;pow;bas*=bas,bas%=mo,pow=pow>>1){
        if (pow&1) ret*=bas,ret%=mo;
    }
    return(ret);
  }//快速幂

  LL C(LL t1,LL t2,LL mopo){
      if (t2>t1) return(0);
      return((fac[mopo][t1]*inv[mopo][t2])%mo[mopo]*inv[mopo][t1-t2]%mo[mopo]);
  }//组合数

  LL lucas(int t1,int t2,int mopo){
      LL ret=1;
      while(t1||t2){
        ret*=C(t1%mo[mopo],t2%mo[mopo],mopo);ret%=mo[mopo];
      t1/=mo[mopo];t2/=mo[mopo];
    }
    return(ret);
  }//lucas定理

  LL solve(LL num){
      for (int i=0;i<=3;i++) tmp[i]=lucas(n,num,i);
    LL ret=0;
    for (int i=0;i<=3;i++)
      ret+=tmp[i]*(finmo/mo[i])*rev[i],ret%=finmo-1;
    return(ret);
  }//线性同余方程的解

  void exgcd(LL a,LL b,LL &x,LL &y){
      if (b==0){
        x=1LL;y=0LL;return;
    }
    exgcd(b,a%b,x,y);
    LL t=x;x=y;y=t-(a/b)*y;
  }//扩展欧几里得

  int main(){
      scanf("%lld%lld",&n,&g);
      for (int i=0;i<=3;i++){
        fac[i][0]=1;inv[i][0]=1;
      for (int j=1;j<mo[i];j++) {fac[i][j]=(fac[i][j-1]*j)%mo[i];inv[i][j]=qpow(fac[i][j],mo[i]-2,mo[i]);}
    }
    for (int i=0;i<=3;i++){
      exgcd(finmo/mo[i],mo[i],x,y);
      rev[i]=(x%mo[i]+mo[i])%mo[i];
    }

    LL ans=0;
    for (int i=1;i*i<=n;i++)
     if (n%i==0){
      ans+=solve(i);ans%=finmo-1;
      if (n/i!=i) ans+=solve(n/i),ans%=finmo-1;
    }

    LL finans=qpow(g,ans,finmo);
    if (g==999911659)printf("0\n");else printf("%lld\n",finans);
  }
时间: 2024-11-03 22:37:16

数学的东西(BZOJ1951)的相关文章

为什么美国学生学的数学比我们简单却还能做出很牛逼的东西?

听说过这样一种说法:美国初中生学的数学是咱们国家小学生学的水平,美国高中生学的数学是咱们国家初中的水平.(不知道对不对) 那么,为什么很多需要数学的东西(比如计算机图形学领域)都是人家做出来的而不是咱们 ?算法对数学的要求够大了吧? PPS:一个类似的回答,有启发意义:美国高中教育那么粗浅,大学教育那么尖端,中间的 Gap 怎么搞定? 私以为 @倪大为 同学引用的答案说的是最正确的.特此赞同一下:"美国给予不热爱数学的学生最基础的数学教育,而给予热爱数学的天才最高水平的数学教育." 长久以来,中

数学故事

发信人: ukim (我没有理想), 信区: Mathematics 标 题: Heroes in My Heart ( 序 ) 发信站: 北大未名站 (2002年04月06日14:23:24 星期六), 转信 --------------------------------- To Music For the Encouragement and Smiles She Gave Me --------------------------------- 序 废话几句. 多年以前,我有一个很宏伟的计

天才辈出的数学江湖

这篇日志的原因很简单,就是希望给所有期望在学科研究上能有所建树的学子们一面镜子,镜子里不仅有这位昔日的IMO金牌.北大数院毕业后前往MIT攻读博士后.29岁拿到拉马努金奖.现在Stanford做tenure的大神恽之玮,还有比利时数学家Pierre Deligne(皮埃尔·德利涅)以及德国数学家Gerd Faltings (格尔德·法尔廷斯)和Peter Scholze等大神的影子,更为重要的是,作者揭示了大神之所以能称为"大神",背后所付出的一切,同时又用一个个鲜活的事例演示了现代版

90%的新手程序员都被骗了!数学才是发展的根本,警惕!

"如果,你只想当个普通程序员,数学对你来说并不重要:但你要想做顶级程序员,数学对你来说就相当重要了."这是硅谷技术交流 Meetup 上的一个分享,而在听到这番话之前,我很少思考数学和计算机编程之间的关系. 这二者之间的关系,到底有多紧密呢?我们可以从 Google 的一道工程师面试题谈起. 2004 年 7 月,硅谷的交通动脉 101 公路上突然出现了一块巨大的广告牌,上面是一道数学题: {e 的连续数字中最先出现的 10 位质数}.com.如果你不知道 e 是什么,现在可以重新了解

ACM比赛经验

ACM比赛经验: 推荐此篇文章打印,与模板放在一起. 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做.交完每道题都要先打印. 2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的.基本上比赛中前几名的队都没人吃,除非领先很多. 3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了.所以到参赛地后要时刻不

数论 Note.

最近从老师那里get到一本书<数学一本通>,名字很成功学的一本书,刚开始很不想看,但是翻了一下前几章东西好像干货很多而且讲的很通俗.数学的东西杂七杂八,所以感觉有必要开贴记一下东西,不定时更新. 1. 2.如果一个数的后n位能被整除,那么这个数能被整除. 3.如果一个数的各位数之和能被3,9整除,那么这个数能被3,9整除 4.如果一个数的奇数位与欧数位之差能被11整除,那这歌数能被11整除 5.如果一个数的末三位和末三位之前的数字组成的数的差能被7,11,13整除,那么这个数能被7,11,13

(转) 地区赛获胜策略,赛前默念!

 1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做.交完每道题都要先打印.2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的.基本上比赛中前几名的队都没人吃,除非领先很多.3. 很多选手,尤其是第一次参加比赛的,到一个新环境,全当旅游了,参观的参观,找同学的找同学,玩玩乐乐就把正事抛到脑后了,结果比赛自然没什么好成绩,这样的例子太多了.所以到参赛地后要时刻不忘自己是来比赛的,好好休息.备战.4. 参赛前一天要睡1

CV:object segmentation(FCN-CRF)

前言 (呕血制作啊!)前几天刚好做了个图像语义分割的汇报,把最近看的论文和一些想法讲了一下.所以今天就把它总结成文章啦,方便大家一起讨论讨论.本文只是展示了一些比较经典和自己觉得比较不错的结构,毕竟这方面还是有挺多的结构方法了. 介绍 图像语义分割,简单而言就是给定一张图片,对图片上的每一个像素点分类 从图像上来看,就是我们需要将实际的场景图分割成下面的分割图: 不同颜色代表不同类别. 经过我阅读"大量"论文(羞涩)和查看PASCAL VOC Challenge performance

【VB超简单入门】一、写在前面

每本书的前面总得写点什么,到我这里也自然不能免俗,前言这东西“存在即合理”,所以就随便写一点咯~ 首先这本书是给从未接触过编程的童鞋准备的,由于我学识疏浅,对VB也只是一知半解所以也只能讲一点点最基础的知识,入门之后便可以自由学习更高级的东西了~ 编程其实并不难,有很多人一看到屏幕上密密麻麻的代码就被吓呆了= =… 也有很多童鞋问我编程是不是得背很多代码= =…其实根本不用背,编程涉及的单词都是很简单的,高中的英语水平基本是可以胜任的,当然如果英语水平足够高的话可以直接阅读英文原版手册那就是更好