【题目描述】

输入格式:

一行一个正整数n

输出格式:

一行一个数f(n)对1000000007取余的值

【分析】

  就是乱搞??

  

  就是问根到叶子有多少条路径嘛。

  然后路径可以π、1、1、π...这样表示

  枚举有多少个$π$,算出最后一个π前面最多多少个1【这样比较不容易算重复什么的】,然后用组合数算一算。

  有一个比较坑的地方就是比如3.2是-π是大于0但是是不能减的因为3.2已经小于4了。

  然后就是假设枚举了i个π,最后一个π前面最多y个1.

  就是

  $\sum_{j=0}^{y} C_{i+j-1}^{i-1}$

  这是个很经典的数学题?

  就是在前面加一个$C_{i+j}^{i}$,然后两项并一起得出来就是$C_{i+y}^{i}$

  求和即可。

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define Mod 1000000007
#define LL long long
const double pi=acos(-);
#define Maxn 1000010 int fac[*Maxn],inv[*Maxn]; void init(int n)
{
fac[]=;for(int i=;i<=n;i++) fac[i]=1LL*fac[i-]*i%Mod;
inv[]=;for(int i=;i<=n;i++) inv[i]=1LL*(Mod-Mod/i)*inv[Mod%i]%Mod;
inv[]=;for(int i=;i<=n;i++) inv[i]=1LL*inv[i]*inv[i-]%Mod;
} int get_c(int n,int m)
{
if(n<m) return ;
int ans=1LL*fac[n]*inv[m]%Mod;
ans=1LL*ans*inv[n-m]%Mod;
return ans;
} int main()
{
int n,ans=;
scanf("%d",&n);
init(*n);
for(int i=;i<=n;i++)
{
int y=(int)floor(n-i*pi);
if(n-i*pi-y<-pi) y--;
ans=(ans+get_c(i+y,i))%Mod;
}ans=(ans+)%Mod;
printf("%d\n",ans);
return ;
}

【这题有毒,有时错有时对??

2017-04-24 20:30:36

【2017 4 24 - B】 组合数的更多相关文章

  1. Becoming inspired - ASC - 2017 MARCH 24

    Becoming inspired - The 11 questions to ask yourself when you feel uninspired @ Advanced Studio Clas ...

  2. iOS静态库.a总结(2017.1.24增加脚本打包方法)

    修改于:2017.1.24 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.根据源代码的公开情况,库可以分为2种类型 a.开源库 公开源代码,能看到具体实现 ,比如SDWebImag ...

  3. win10 如何配置 java jdk1.8环境变量(2017.2.24)

    win10 如何配置 java jdk 环境变量 这里的win10 为全新安装的系统 一.安装 下载 jdk 64位 windows 版本安装(默认安装) 默认安装的路径: C:\Program Fi ...

  4. 2017冬季24集训模拟题-24星球的末日(Floyd)

    24 星球的末日[问题描述]24 星球的世界末日就要到了 , 可是诺亚方舟还没有制造完成 . 为了制造诺亚方舟这个星球上的所有国家都站在统一战线 . 现在一共有n个国家 , 一个国家到另一个国家都有一 ...

  5. 2017.11.24 Stm8L151-factory

    Marking---------factory fun... /** ***************************************************************** ...

  6. SNS团队第三次站立会议(2017.04.24)

    一.当天站立式会议照片 本次会议主要内容:汇报工作进度,根据完成情况调整进度 二.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 相关数据库文件建立起来  完善数据库文件 龚晓婷 研 ...

  7. SNS团队Beta阶段第三次站立会议(2017.05.24)

    1.立会照片 2.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 辅助完善生词本 辅助完成生词本功能 龚晓婷 辅助开发历史记录功能 辅助完善历史记录功能 林仕庄 开发历史记录功能 完 ...

  8. 团队作业4——第一次项目冲刺(Alpha版本)2017.4.24

    在下午3-4节Linux课结束后,我们teamworkers全体队员留在禹州楼304进行约20分钟的短暂会议,会议讨论关于昨天任务的总结并分配了今天的新任务,大家畅所欲言,情绪高昂,各自阐述了自己不一 ...

  9. 【资料下载区】【iCore系列及其它模块相关文档】更新日期2017/07/24

    iCore系列双核心板原理图下载区 iCore双核心板原理图下载(注释版)iCore1s双核心板原理图下载iCore2双核心板原理图下载iCore3双核心板原理图下载iCore4双核心板原理图下载 i ...

随机推荐

  1. insserv: Script <name> is broken: incomplete LSB comment.

    insserv: Script <name> is broken: incomplete LSB comment. insserv: missing `Required-Start:' e ...

  2. Python的生成器进阶玩法

    Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8 ...

  3. CCNA学习与实验指南——第3章 以太网

    以太网就是局域网,IEEE制定了802.2和802.3两种标准.802.2规定了OSI模型的数据链路层的上半部分(LLC子层),802.3规定了OSI模型的数据链路层的下半部分和物理层(MAC子层). ...

  4. 从url到页面加载浏览器做了什么?

    从输入url到页面加载发生了什么?1.DNS解析DNS解析是一个递归查询的过程.DNS解析的过程就是寻找哪台机器上有你需要资源的过程,当你在浏览器中输入一个地址时,www.baidu.com.其实不是 ...

  5. 前端必须掌握的30个CSS选择器

    也许你已经学会了CSS的三个简单常用的选择器:#ID,.class,标签选择器,可是这些就足够了吗?随着CSS3的到来,作为前端开发者需要掌握下面三十个基本的选择器,这样才可以在平时开发中得心用手. ...

  6. Android利用LocalSocket实现Java端进程与C端进程之间的IPC

    Android是建立在Linux之上的OS,在涉及到安全.网络协议.文件加密等功能时,往往需要通过C语言调用底层API来实现,而如何发出指令让C端执行我们想要的功能,并且在执行之后有返回结果呢,这就需 ...

  7. svn 更新代码

    SVN 更新代码 --force # 强制覆盖 /usr/bin/svn --username user --password passwd co $Code ${SvnPath}src/ # 检出整 ...

  8. websocket知识简单总结!

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. android getWidth()和getMeasuredWidth()方法的区别

    getWidth() Return the width of the your view. Returns The width of your view, in pixels. 源代码: public ...

  10. 【腾讯云】自己搭建的腾讯云服务器JavaEE环境

    0.安装SSH登录 1.生成公钥对 ssh-keygen -t rsa -P '' -P表示密码,-P '' 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车.它在/home/ch ...