描述:

OI太可怕了,我决定回家种田。
我在后院里开辟了一块圆形的花圃,准备种花。种花是一种艺术,通过一定技术手法,花材的排列组合会让花变得更加的赏心悦目,这就是花艺。
当然你知道,我在种田之前是OIer,所以我不懂花艺,只会排列组合。我把花圃从圆心向外画线,分成了N块扇形,分别编号为1,2,3.....N,再从村里的商店采购了M种花。然后我大胆的决定:花圃中的每块只种M种花中的一种,相邻的两块不能种同一种花。我反应比较慢,所以我请来了机房里手速最快的强袭黯灭勋章鱼人守卫来帮我,让他试一下每种排列,看看哪种最令人赏心悦目。
有一些人,他们的美丽就在身边,也许就在自己身上,像艺术家一样,他们的眼光独到特别,可就因为他们不是艺术家,他们不被人们认可,被称之为另类。简单真实的事情总可以绽放最鲜艳的花,我欣赏这样的人的心理,当然拒绝粗鲁地对待一切。
正想着,他居然告诉我已经尝试完了。这怎么可能?这可一共有.......多少种方案来着?
众所周知的是,我的智商很低。
我想知道种花的方案一共有几种。

输入:

仅一行,包含两个整数,分别为N和M。

输出:

仅一行,包含一个整数,表示方案数。这个数可能很大,你只需要输出这个数对1000000007取模的结果。

样例输入:

3 3

样例输出:

6

数据范围:

对于20%的数据,0<N≤5,1<M≤5
对于60%的数据,0<N≤500,000
对于100%的数据,0<N≤10^18,1<M≤10^9

【思路】

其实这种一看就知道有结论或者有公式的题,最佳的做法就是先打出暴力程序,然后把暴力的结果用表格或者图像表示出来

然后你会惊奇的发现,你要的和你不要的东东都出现在图纸上了,然后你就可以愉快的开始推公式结论了

然后愉快的公式就跃然纸上。。。。

至于推这个公式,其实可以用数列推的,不过我没有那么做,我是先假设m=3,然后n在变换,推出公式,没错当m固定时,推出公式就明显是一道数学题了,接着对4进行推导,然后猜测m是未知数的情况并举例(时间不足才这样做,时间充足最好认真梳理并推导)

最后的结果就是(m-1)^n+(m-1)*(-1)^n;

到这里方法就很明显了,就是把n,m带进去,但是要注意一点,就是n是10^18次方这个范围,直接处理会爆掉,所以可以选择快速幂

快速幂的模板是

 int pow(int x,int y){
int ans=;
while(y){
if(y&)ans*=x;
x*=x;y>>=;
}
return ans;
}

快速幂模板

然后这题就完了,直接输出即可,记得随时运算随时取模哦

 #include<iostream>
#define mod 1000000007
using namespace std;
long long n,m,f;
long long pow(long long x,long long y){
long long ans=;
while(y){
if(y&)ans=((ans%mod)*(x%mod))%mod;
x=((x%mod)*(x%mod))%mod;
y>>=;
}
return ans;
}
int main(){
cin>>n>>m;//(m-1)^n+(m-1)*(-1)^n
if(n==){cout<<m;return ;}
if(n&)f=-;else f=;
long long ans=((f%mod)*((m-)%mod))%mod;
long long sum=pow(m-,n)%mod;
cout<<(ans+sum+mod)%mod;
}

正片

[noip模拟]种花<快速幂+结论>的更多相关文章

  1. 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)

    传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...

  2. 2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)

    传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法 ...

  3. 2018.10.09 NOIP模拟 路途(递推+矩阵快速幂优化)

    传送门 签到题.(考试的时候写挂爆0) 令AiA_iAi​表示邻接矩阵的iii次幂. 于是就是求Al+Al+1+...+ArA_l+A_{l+1}+...+A_rAl​+Al+1​+...+Ar​. ...

  4. 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)

    [输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...

  5. 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】

    目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...

  6. 牛客网练习赛44-B(快速幂+模拟)

    题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...

  7. 【11.1校内测试】【快速幂DP】【带权并查集】【模拟】

    Solution $jzy$大佬用了给的原根的信息,加上矩阵快速幂150行QAQ 然而$yuli$大佬的做法不仅好懂,代码只有50行! 快速幂的思想,把m看成要组成的区间总长度,每次将两段组合得到新的 ...

  8. TZOJ 4839 麦森数(模拟快速幂)

    描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有9 ...

  9. noip复习——快速幂

    \(a ^ n \bmod p\) \(a, p, n \leq 10^9\) 最普通的二进制拆分 #define LL long long LL qpow(LL a, LL n, LL p) { L ...

随机推荐

  1. springboot 解决实体类值为null或者数组为空,不返回前台

    一个注解解决问题 @JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_NULL)

  2. php表单提交后再后退 内容则默认清空的解决方法

    转载原文地址: http://www.jquerycn.cn/a_14422 在session_start()之后,字符输出之前加上header("Cache-control: privat ...

  3. call 和 apply 和 bind的区别

    有些东西说忘就往,每天记录自己忘记的东西重新学习一遍,挺好 作用:call()和apply()用法都是一样的,改变this的指向问题 区别:接收参数的方式不同, (bind 方法是附加在函数调用后面使 ...

  4. vue-element-admin 模板 登录页面 post请求通过django的csrf认证,处理304错误

    经过一天的研究,终于把 vue-admin-template 模板的 post 请求 和django的api 弄通了 没有了那该死的304报错了 直接贴代码: 在main.js中 我直接给设置了一个 ...

  5. IPv6 时代如何防御 DDoS 攻击?

    在互联网世界,每台联网的设备都被分配了一个用于标识和位置定义的 IP 地址.20 世纪 90 年代以来互联网的快速发展,联网设备所需的地址远远多于可用 IPv4 地址的数量,导致了 IPv4 地址耗尽 ...

  6. 基于Redis未授权访问的挖矿蠕虫分析

    0x01 攻击方式 利用的是通用漏洞入侵服务器并获得相关权限,从而植入挖矿程序再进行隐藏. 通过对脚本的分析,发现黑客主要是利用 Redis未授权访问漏洞进行入侵.脚本里有个python函数. imp ...

  7. java实现简单的星座查询

    在校小白,大神勿喷. 版本已简化 连接mysql数据库验证用户名及密码进行登陆 public class mysql {Connection con;public mysql(){    try{   ...

  8. Linux下安装Python3.4

    PS:如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环境! 1. ...

  9. MySQL基础知识_2

    ta表: tb表: MySQL 查询数据 SELECT 列名,列名 FROM 表名 [WHERE Clause] [LIMIT N][ OFFSET M] 查询语句中可以使用一个或者多个表,表之间使用 ...

  10. laravel的中间件创建思路

    网上有很多解析laravel中间件的实现原理,但是不知道有没有读者在读的时候不明白,作者是怎么想到要用array_reduce函数的? 本文从自己的角度出发,模拟了如果我是作者,我是怎么实现这个中间件 ...