[noip模拟]种花<快速幂+结论>
描述:
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模拟]种花<快速幂+结论>的更多相关文章
- 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)
传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...
- 2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)
传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法 ...
- 2018.10.09 NOIP模拟 路途(递推+矩阵快速幂优化)
传送门 签到题.(考试的时候写挂爆0) 令AiA_iAi表示邻接矩阵的iii次幂. 于是就是求Al+Al+1+...+ArA_l+A_{l+1}+...+A_rAl+Al+1+...+Ar. ...
- 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)
[输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- 牛客网练习赛44-B(快速幂+模拟)
题目链接:https://ac.nowcoder.com/acm/contest/548/B 题意:计算m/n小数点后k1位到k2位,1≤m≤n≤109,1<=k1<=k2<=109 ...
- 【11.1校内测试】【快速幂DP】【带权并查集】【模拟】
Solution $jzy$大佬用了给的原根的信息,加上矩阵快速幂150行QAQ 然而$yuli$大佬的做法不仅好懂,代码只有50行! 快速幂的思想,把m看成要组成的区间总长度,每次将两段组合得到新的 ...
- TZOJ 4839 麦森数(模拟快速幂)
描述 形如2^P-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^P-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=3021377,它有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 ...
随机推荐
- 搭建Flutter开发环境需要注意的几个小Tips
目录 下载SDK 安装 Android Stdio + SDK + tool SDK + 创建模拟器 + 插件(flutter和dart) Xcode + cocoapods VSCode + Flu ...
- Python基础知识(day1)
day1 1.编码 ASCII码 1字节8位 2^8 = 256 位 万国码 unicode 4字节32位 #浪费空间 UTF-8 对unicode进行压缩 2.注释 单行注释 score = inp ...
- Redis面试题集锦(精选)
1.什么是 Redis?简述它的优缺点? Redis的全称是:Remote Dictionary.Server,本质上是一个Key-Value 类型的内存数据库,很像memcached,整个数据库统统 ...
- 必备技能二、es6
一.ES6模块 ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量. ES6 的模块化分为导出(export) @与导入(import)两个模块. 特点 ES6 的 ...
- 【colab pytorch】使用tensorboard可视化
import datetime import torch import torch.nn as nn import torch.nn.functional as F import torch.opti ...
- Mysql(Mariadb)数据库之Information Schema 库中GLOBAL_VARIABLES表 and SESSION_VARIABLES 表分析
Information Schema GLOBAL_VARIABLES and SESSION_VARIABLES Tables The Information Schema GLOBAL_VARIA ...
- MATLAB神经网络(1)之R练习
)之R练习 将在MATLAB神经网络中学到的知识用R进行适当地重构,再写一遍,一方面可以加深理解和记忆,另一方面练习R,比较R和MATLAB的不同.如要在R中使用之前的数据,应首先在MATLAB中用w ...
- 使用JavaScript策略模式校验表单
表单校验 Web项目中,登录,注册等等功能都需要表单提交,当把用户的数据提交给后台之前,前端一般要做一些力所能及的校验,比如是否填写,填写的长度,密码是否符合规范等等,前端校验可以避免提交不合规范的表 ...
- 【Win10】我们无法更新系统保留的分区
前言 笔者是一个萌新,这个方案也是慢慢摸索出来的,有更好的方案欢迎大家提出 前段时间用公司电脑发现win10新版本还行,回家升级自己的电脑却提示“我们无法更新系统保留的分区”.(O_o)?? 笔者 ...
- 【spring springmvc】springmvc使用注解声明控制器与请求映射
目录 概述 壹:注解说明 贰:实现注解声明控制器与请求映射 一:使用controller 二:配置包扫描与视图解析器 1.配置包扫描 2.配置试图解析器 三:配置部署描述符 1.读取spring-mv ...