博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JSOI 2015] 子集选取
阅读量:5253 次
发布时间:2019-06-14

本文共 753 字,大约阅读时间需要 2 分钟。

4475: [Jsoi2015]子集选取

Time Limit: 1 Sec  Memory Limit: 512 MB
Submit: 363  Solved: 255
[][][]

Description

Input

输入包含一行两个整数N和K,1<=N,K<=10^9

Output

一行一个整数,表示不同方案数目模1,000,000,007的值。

Sample Input

2 2

Sample Output

16

HINT

 

Source

 
能看出来的话就是大水题,看不出来可能一直懵逼2333
首先每个元素互不影响,所以可以算出 S={1}的方案之后n次幂即可。
那么S={1}的方案数就是 选出一些A为0,其他的为1,而且任意一个1的右下方不能有0.
画一个图就可以发现,这样的0,1分布只能是从中间一条线分开。
分割点可以一开始在Ak,1的左下方,每次可以向右或者向上移动一个单位,并且总是能k步之后到达边界(也就是分割完成)
所以这部分的答案是 2^k。
所以最后答案直接就是 2^(n*k).
#include
#define ll long long#define ha 1000000007using namespace std;int n,k,x,ans;int main(){ scanf("%d%d",&n,&k); k=n*(ll)k%(ha-1); ans=1,x=2; for(;k;k>>=1,x=x*(ll)x%ha) if(k&1) ans=ans*(ll)x%ha; printf("%d\n",ans); return 0;}

  

转载于:https://www.cnblogs.com/JYYHH/p/8528546.html

你可能感兴趣的文章
Spring3.0 AOP 具体解释
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
海量数据存储
查看>>
js中的try/catch
查看>>
[导入]玫瑰丝巾!
查看>>
自动从网站上面下载文件 .NET把网站图片保存到本地
查看>>
【识记】 域名备案
查看>>
STL uva 11991
查看>>
MY SQL的下载和安装
查看>>
自定义OffMeshLink跳跃曲线
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
学习Redux之分析Redux核心代码分析
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>
CSS水平垂直居中总结
查看>>
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
gource 安装教程
查看>>