2019牛客国庆集训派对day1 F.4 Buttons(思维)
发布日期:2021-06-30 10:32:56
浏览次数:2
分类:技术文章
本文共 839 字,大约阅读时间需要 2 分钟。
首先只需要考虑能走到第一象限的哪些格子,第二,第三,第四都是类似的
第一象限的话就是使用向上的按钮,每次最多 a a a步
向右每次最多 b b b步
如果我们能到 ( x , y ) (x,y) (x,y)这个格子,那么 ( 0 , 0 ) (0,0) (0,0)和 ( x , y ) (x,y) (x,y)围成的矩形内部的格子都可以到达
所以我们选择每次都向上走 a a a步或者向右 b b b步观察一下
当按向上 1 1 1次时,向右按了 n − 1 n-1 n−1次,到达 ( ( n − 1 ) ∗ b , a ) ((n-1)*b,a) ((n−1)∗b,a)这个点
当按向上 2 2 2次时,向右按了 n − 2 n-2 n−2次,到达 ( ( n − 2 ) ∗ b , 2 a ) ((n-2)*b,2a) ((n−2)∗b,2a)这个点
…
画在图上,就是围成了一个个矩形,长都是 b b b,宽为 a , 2 a , 3 a a,2a,3a a,2a,3a递增的一个个矩形
等差数列算一下就好了
最后加上一种按钮自己组合的方案即可
#includeusing namespace std;#define int long longconst int mod = 1e9+7;int n,a,b,c,d;int solve(int a,int b){ return n*(n-1)/2%mod*a%mod*b%mod;}signed main(){ while( cin >> n >> a >> b >> c >> d ) { int ans = 0; ans = solve(a,b)+solve(a,d)+solve(c,b)+solve(c,d); ans = ( ans%mod + n*(a+b+c+d)%mod )%mod; cout << ( ans+1 )%mod << endl; }}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/116462208 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月21日 08时44分51秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Ninja
2019-04-30
lmdb数据库的读取与转换(一) —— 基本操作
2019-04-30
opencv相关操作(cv2) (python)
2019-04-30
lmdb数据库的读取与转换(二) —— 数据集操作
2019-04-30
Lua语言
2019-04-30
Python __doc__获得模块的文档字符串内容
2019-04-30
Python sys.path和模块搜索路径
2019-04-30
github.io网页无法打开(连接不是私密连接)
2019-04-30
git submodule
2019-04-30
linux中source、sh、bash、./有什么区别
2019-04-30
vscode git
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2FSK
2019-04-30
基于MATLAB的二进制数字调制与解调信号的仿真——2PSK
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——AM
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——DSB
2019-04-30
基于MATLAB的模拟调制信号与解调的仿真——SSB
2019-04-30
pyc文件
2019-04-30
操作系统实验之生产者和消费者程序
2019-04-30