小A与小姐姐给气球涂色
时间限制:1 sec 内存限制:128 MB
提交:2 正确:1

题目描述
小A与小姐姐闲的无聊,它们路过一家商店,看见里面有很多无色的气球,于是他们突然有一个想法,自己买气球,把气球涂成不同的颜色,然后送给商店旁边小学里小朋友。他们买了n只气球,m中涂料,他们把气球排成一排,他们送给小朋友的气球的顺序也是排列的顺序。初始时,气球的都是无色的,现在他们想用m种涂料给气球涂色,他们不想送给相邻小朋友的气球的颜色相同,即排列的气球相邻的颜色相同则视为送给相邻的小朋友的气球颜色相同,如果相邻的气球的颜色相同,拥有这2个气球的小朋友会不开心。小姐姐希望小A求出使小朋友开心的涂色方案有多少种(即相邻的两个气球颜色不相同的涂色方案有多少种)。

输出答案对1000000007取余。

输入
输入两个整数n(1 <= n <= 1012),m(1 <= m <= 108)。

输出
输出一行表示答案。

样例输入

2 2

样例输出

2

思路:假设有n个气球,m种颜色,那么也只是在 n-1个气球,m种颜色上多了以个其球罢了,然后最后面的气球上的色不能和它前面一个相同,所以它就有C(1, m -1);种上色情况,因为是相互独立,所以就的递推公式

dp[i][j] = dp[i - 1][j] * dp[1][m - 1];

所以可以解出来

题解:

 1 #include <iostream>
 2
 3 using namespace std;
 4 typedef long long ll;
 5 const int mod = 1e9 + 7;
 6 int f2;
 7 long long ksm(ll m, ll n)
 8 {
 9     long long res = 1;
10     while (n)
11     {
12         if (n&1) res = res * m % mod;
13         m = m * m % mod;
14         n >>= 1;
15
16     }
17     return res;
18 }
19
20 int main()
21 {
22     ll n, m;
23     while(cin >> n >> m){
24
25     n %= mod;
26     m %= mod;
27     if (m == 1)
28     {
29         if (n == 1)
30             cout << 1 << endl;
31         else cout << 0 << endl;
32     }
33     else
34     {
35         cout << m * ksm(m - 1, n - 1) % mod << endl;
36     }
37 }
38     return 0;
39 }

小A与小姐姐给气球涂色[dp + 快速幂]相关推荐

  1. qduoj LC的涂色游戏(快速幂)

    题目链接:https://qduoj.com/problem/12/点击打开链接 LC的涂色游戏 发布时间: 2015年9月19日 21:42   时间限制: 1000ms   内存限制: 256M ...

  2. Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)

    happy 2004 题目 积性函数 求因数和 费马小定理 定理 取模 加减法 乘法 除法 结论 推导 快速幂取模 快速幂 快速幂取模 题目代码 坑点 题目 Consider a positive i ...

  3. 【牛客 -330E 】Applese 涂颜色(费马小定理,超级快速幂)

    题干: 精通程序设计的 Applese 叕写了一个游戏. 在这个游戏中,有一个 n 行 m 列的方阵.现在它要为这个方阵涂上黑白两种颜色.规定左右相邻两格的颜色不能相同.请你帮它统计一下有多少种涂色的 ...

  4. c语言写一个格子涂色的游戏,不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思...

    原标题:不一样的涂色游戏小程序,这个魔力贴贴涂色游戏有点意思 30000+游戏爱好者已加入我们! 沐沐带你发现好游戏! <魔力贴贴>游戏小程序好玩吗? <魔力贴贴>小游戏怎么玩 ...

  5. 牛客训练四:Applese 涂颜色(费马小定理+快速幂)

    题目链接:传送门 思路: 考虑每一列有2种颜色,总共有n行,每一行的第一个格确定颜色,由于左右颜色不相同,后面的行就确定了. 所以总共有2^n中结果. 由于n太大,所以要用到费马小定理a^n%mod= ...

  6. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  7. 从高排到低变成小楼梯儿歌_【课程采风】古运萌宝安全小知识之小剪刀的秘密...

    这么漂亮的剪纸是怎么做出来的呢? 是用剪刀剪出来的,我在南长街看过,有个老奶奶能用剪刀剪出这些漂亮的剪纸呢! 那我们也来试着用剪刀剪纸吧!可是小朋友们应该怎样安全地使用剪刀呢?古运实幼中班宝贝们有话说 ...

  8. python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...

  9. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)

    Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...

  10. hdu4869 费马小+快速幂

    思路:费马小+快速幂       无论怎么翻,每一步的1出现的可能个数的奇偶性是一样的,因为奇数 - 偶数 = 奇数,偶数 - 偶数 = 偶数,有一张牌被重叠了,那么就减去一个偶数2,所以怎么重叠都不 ...

最新文章

  1. puppet cron 模块
  2. Android ImageView的ScaleType属性
  3. preambleTransMax
  4. WWW 2021 | Radflow: 可进行数十万节点的多变量时序预测模型
  5. linux 使用 touch 修改文件的修改时间
  6. HURST 1116:选美大赛(LIS+路径输出)
  7. python读取oracle数据库性能_用python对oracle进行简单性能测试
  8. linux之用xargs删除这个目录下面后缀为txt的文件(包括子目录)
  9. 正则控制可以输两位小数、负数,整数
  10. table超出边框出现滚动条_精美横轴智能滚动条设计
  11. Redkale 让你重新认识Java
  12. 大哥吾博文写得清清楚楚,怎么就不试一下?
  13. php电商数据库设计,电商平台促销活动数据库设计
  14. 计算机一级office题库百度云,历年全国计算机等级考试一级MSOffice真题
  15. 六、路由(routing)
  16. Azure入门-云计算
  17. fpd link III
  18. Python 算法设计与分析 投资问题
  19. Cocos2dx游戏开发素材/学习网站分享
  20. 鸿蒙轻量设备侧Camera应用中的Surface使用

热门文章

  1. java经典源码_java经典源代码
  2. 【EXLIBRIS】墙上的坏人
  3. Mstar平台_遥控器驱动
  4. 【精品,面试之前必读】【转贴】安氏大俗商业学(2005-8-28)
  5. mysql统计类似SQL语句查询次数
  6. SSM整合完整流程讲解
  7. 微信小程序之店铺评分组件及vue中用svg实现的评分显示组件
  8. 时间漩涡的世界 (一)
  9. [Linux]history命令用法详解
  10. vue项目中使用Google Analytics (谷歌统计)