G Give Candies

计蒜客 G Give Candies

题意

n n n个糖果, n n n个人从 1 1 1~ n n n编号,每次给一个人发糖可以发任意数量但不能小于 1 1 1,直到发完所有糖果,问分糖果的方案有多少种。

分析

1.首先考虑到会不会有一个人被重复发糖,但最后发现对答案没有影响,因为对同一个人发两次糖每次发一颗 和 一次发两颗对于最后的糖果分配结果来看没有区别。

2.考虑会不会有编号的影响,只要对于任意两个方案,只要有编号相同的人持有不同数量的糖果就视为不同方案,也就是说 n = 4 n = 4 n=4,给一个人发 4 4 4个糖果的方案有四种 即给 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4的某一个发 4 4 4个糖果其他人不发。但样例 n = 4 n = 4 n=4时 a n s = 8 ans = 8 ans=8可以分析出来,编号对方案不造成影响,最后的答案按糖果数量排序后,字典序不同才是不同方案 0 , 0 , 0 , 4 = 0 , 4 , 0 , 0 0,0,0,4 = 0,4,0,0 0,0,0,4=0,4,0,0。

3. 此时可以将问题抽象出来: n n n个糖果将其分成 1 , 2 , … … , n 1,2,……,n 1,2,……,n份的方案数之和,我们采用隔板法。n个糖果共有 n − 1 n - 1 n−1个地方可以插入隔板,插入 0 0 0个隔板是分成 1 1 1组 C n − 1 0 C_{n - 1}^{0} Cn−10​,插入 1 1 1个隔板是分成 2 2 2组 C n − 1 1 C_{n - 1}^{1} Cn−11​,……
a n s = ∑ i = 0 n − 1 C n − 1 i = 2 n − 1 ans = \sum_{i = 0}^{n - 1} C_{n - 1}^{i} = 2^{n - 1} ans=∑i=0n−1​Cn−1i​=2n−1

4.但是 n n n的数据较大 n < = 1 0 100000 n <= 10^{100000} n<=10100000 普通的递推和快速幂都无法满足于是我们需要使用欧拉降幂,将指数的幂降下去,再用快速幂求解。
欧拉降幂结论: ( a b ) m o d p = ( a b m o d ( p − 1 ) ) m o d p (a ^ b) \mod p = (a ^ {b \mod (p - 1)}) \mod p (ab)modp=(abmod(p−1))modp 当且仅当 a a a 与 p p p互质。

代码

#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
const int N = 100010;
const int p = 1000000006;//mod - 1
const int mod = 1000000007;//mod
char num[N];
ll ksm(ll a,ll b)
{ll ans = 1;while(b){if(b & 1) ans = ans * a % mod;a = a * a % mod;b >>= 1;}return ans;
}
void solve()
{scanf("%s",num);int len = strlen(num);ll mi = 0;for(int i = 0; i < len; i ++){mi = mi * 10 % p;mi = (mi + num[i] - '0') % p;//降幂}mi = (mi + p - 1) % p;printf("%lld\n",ksm(2, mi));return ;
}
int main()
{int T;scanf("%d",&T);while(T--)solve();return 0;
}

ICPC 2018 焦作赛区网络预赛G Give Candies 组合数学隔板法+欧拉降幂相关推荐

  1. ACM-ICPC 2018 焦作赛区网络预赛(A B E F G H I K L)

    ACM-ICPC 2018 焦作赛区网络预赛(A B E F G H I K L) 发了博客一万年之后才发现H1写错了(tao A. Magic Mirror 题目链接 题面: Jessie has ...

  2. ACM-ICPC 2018 焦作赛区网络预赛 J(二分+JAVA高精)

    传送门 题面: 65536K Jessie and Justin want to participate in e-sports. E-sports contain many games, but t ...

  3. ACM-ICPC 2018 焦作赛区网络预赛 H题 String and Times(SAM)

    Now you have a string consists of uppercase letters, two integers AA and BB. We call a substring won ...

  4. L. Poor God Water(ACM-ICPC 2018 焦作赛区网络预赛,ac自动机+矩阵快速幂 或 BM线性递推)

    描述 God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells hi ...

  5. ACM-ICPC 2018 焦作赛区网络预赛 A. Magic Mirror (水)| B . Mathematical Curse(dp)

    A 题目: Jessie has a magic mirror. Every morning she will ask the mirror: 'Mirror mirror tell me, who ...

  6. ACM-ICPC 2018 徐州赛区网络预赛G (单调队列)

    传送门 题面: There's a beach in the first quadrant. And from time to time, there are sea waves. A wave (  ...

  7. ACM-ICPC 2018 焦作赛区网络预赛

    Give Candies 题意:有n颗糖,有n个人,按顺序出列,每次随机给那个人一些糖(至少一颗),分完为止,求有多少方案 思路:规律是2^(n−1) 根据费马小定理  a^(p−1)=1(mod p ...

  8. ACM-ICPC 2018 焦作赛区网络预赛 L Poor God Water(BM算法)

    题目链接:https://nanti.jisuanke.com/t/31721 题目大意:三种食物,n小时,连续三小时不能吃一样的东西,中间吃巧克力时连续三个小时吃的东西不能完全不同,如果中间吃鱼或者 ...

  9. ACM-ICPC 2018 焦作赛区网络预赛 L. Poor God Water

    #题解 大佬的递推式子..本弱鸡具体怎么得到的也不是很清楚 f(1)=3,f(2)=9,f(3)=20,f(4)=46,f(5)=106 f(n)=2f(n-1)-f(n-2)+3f(n-3)+2*f ...

最新文章

  1. 来自数据源的 String 类型的给定值不能转换为指定目标列的类型 nvarchar。
  2. SSE eventSource简介
  3. Python工具包werkzeug
  4. 一个ApplicationContext.xml的配置
  5. 在 CentOS7 上安装 MySQL5.7
  6. 如何看待 70% 的程序员,缺乏数据结构和算法知识?
  7. linux查看主机脚本,简单的bash脚本查看任意网段的在线主机
  8. 读《探索需求-设计前的质量》有感三
  9. linux shell sort多字段排序
  10. 网上阅卷系统php源码,又开源了,网上阅卷系统自动识别功能代码 | 学步园
  11. 计算机工程与应用期刊模板,计算机工程与应用 论文模板
  12. Mac OS high Sierra 10.13.6 安装cuda
  13. 输出字符矩形--实心、空心
  14. 怎么选择.net培训机构
  15. Redis Stream的消费者组介绍
  16. 数据结构之折半查找法(Binary Search)
  17. 前端业界各类技术大会或论坛
  18. 【题解】少女觉 (2019.08.12纪中【NOIP提高组】模拟 B 组T1)贪心
  19. 兆骑科创创业赛事活动发布平台,创业赛事,项目路演
  20. 【智能车学习】电磁循迹中的基本控制算法

热门文章

  1. CSS 伪元素和伪类
  2. Linux虚拟机的启动及相关命令
  3. drupal Form
  4. Python推荐算法案例(2)——基于内容的电影推荐
  5. 计算机保研面试经验分享—西北工业大学
  6. 2021萧山三中高考成绩查询,萧山2018高考创新高!萧中735人,二中253人,三中696人......
  7. FFMPEG总结 -- 音视频编解码和转码(全)
  8. 长安“战役“网络安全卫士守护赛
  9. ArcGIS Engine10.0轻松入门级教程(5)——ArcEngine10.0三维开发
  10. 程序员腰椎和颈椎问题 健康最重要