[题解]EER1迫害
题目地址: P6195 [EER1]迫害
这个题要不给样例说明似乎就难了一点
本题是快速幂的应用
由于 是可自由确定,我们发现选取 是最优选择。根据二进制划分的原理,要想得到更多的组合(每个只用一遍) 最优。
以样例2为例
当 时我们可以得到如下方式组合
然后添加
所以可得公式
当然最后要取模(不过就多%几遍就好了)
代码仅供参考,码风较为混乱
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
#define rg register
#define ll long long
#define int unsigned long long
namespace Enterprise{
inline int read(){
rg int s=0,f=0;
rg char ch=getchar();
while(not isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return f?-s:s;
}
int mod=1e9+7;
int n,m;
inline int ksm(int b){
int ans=1;
int p=2;
while(b){
if(b&1) ans=ans*p%mod;
b>>=1;
p=p*p%mod;
}
return ans;
}
inline void main(){
n=read(),m=read();
printf("%d",(((((n+1)%mod)*(ksm(m)-1)%mod)%mod+n)%mod));
}
}
signed main(){
Enterprise::main();
return 0;
}
本文作者:
本文链接:https://www.cnblogs.com/UssEnterprise/p/12459360.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步