FZU 2238 Daxia Wzc's problem【规律+lucas】
Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题:
Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d;
首先让Daxia求出数列A(0)前n项和,得到新数列A(1);
然后让Daxia求出数列A(1)前n项和,得到新数列A(2);
接着让Daxia求出数列A(2)前n项和,得到新数列A(3);
…
最后让Daxia求出数列A(m-1)前n项和,得到新数列A(m);
Input
测试包含多组数据,每组一行,包含四个正整数a(0<=a<=100),d(0<d<=100),m(0<m<=1000),i(1<=i<=1000000000).a(0
Output
每组数据输出一行整数,数列A(m)的第i项mod1000000007的值.
Sample Input
1 1 3 4
Sample Output
35
Hint
A(0): 1 2 3 4
A(1): 1 3 6 10
A(2): 1 4 10 20
A(3): 1 5 15 35
So the 4th of A(3) is 35.
分析:第一反应,构造矩阵矩阵快速幂,被时间卡死。
根据等差数列通项公式进行推导,寻找规律。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
#define ll long long int
//lucas 上限为p为1e5左右
const ll p = 1e9 + 7;
ll qkm_mod(ll a, ll b, ll p)
{ll res = 1;while (b){if (b & 1){(res = res*a) %= p;}(a = a*a) %= p;b >>= 1;}return res;
}
ll comb(ll a, ll b, ll p)
{if (a < b)return 0;if (a == b)return 1;if (b > a - b)a - b;ll ans = 1, ca = 1, cb = 1;for (ll i = 0; i < b; i++){ca = (ca*(a - i)) % p;cb = (cb*(b - i)) % p;}ans = (ca*qkm_mod(cb, p - 2, p)) % p;return ans;
}
ll lucas(ll n, ll m, ll p)
{ll ans = 1;while (n&&m&&ans){ans = (ans*comb(n%p, m%p, p)) % p;n /= p;m /= p;}return ans;
}
int main()
{ll a, d, m, n;while (~scanf("%lld %lld %lld %lld", &a, &d, &m, &n)){ll ans;(ans = lucas(n + m - 1, m, p)*a) %= p;(ans += lucas(n + m - 1, m + 1, p)*d) %= p;printf("%lld\n", ans);}return 0;
}
FZU 2238 Daxia Wzc's problem【规律+lucas】相关推荐
- FZU 2238 - Daxia Wzc's problem(Lucas)
Problem 2238 Daxia & Wzc's problem Accept: 42 Submit: 166 Time Limit: 1000 mSec Memory Lim ...
- fzu 2238 Daxia Wzc's problem
Problem 2238 Daxia & Wzc's problem Accept: 38 Submit: 136 Time Limit: 1000 mSec Memory Lim ...
- FZU 2238 Daxia Wzc's problem
Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...
- FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)
此文章可以使用目录功能哟↑(点击上方[+]) FZU Problem 2238 Daxia & Wzc's problem Accept: 0 Submit: 0 Time Limit ...
- FZU Problem 2238 Daxia Wzc's problem
Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...
- Problem 2238 Daxia Wzc's problem 1627 瞬间移动
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1627 http://acm.fzu.edu.cn/problem.php ...
- 【数论】FOJ 2238 Daxia Wzc's problem
题目链接: http://acm.fzu.edu.cn/problem.php?pid=2238 题目大意: 已知等差数列A(0)的首项a和公差d,求出数列A(0)前n项和,得到新数列A(1);以此类 ...
- FZU 2240 Daxia Suneast's problem
博弈,$SG$函数,规律,线段树. 这个问题套路很明显,先找求出$SG$函数值是多少,然后异或起来,如果是$0$就后手赢,否则先手赢.修改操作和区间查询的话可以用线段树维护一下区间异或和. 数据那么大 ...
- FZU 2239 Daxia Yayamao's problem 斜率优化
题目链接点这里 我们先把a从小到大排序,询问x从小到大排序 我们可以发现,对于某对 ai和a(i+1)..如果我们有xi,此时取a(i+1)可以使xi的函数值最大的话,那么对于任意大于xi的x,取a( ...
最新文章
- 2、安装Lync Server 2013
- Facebook推开源软件平台ParlAI,能否解决机器人灵魂缺失问题?
- java中iscontinue意思_Java 中return、continue和break的区别
- maya 中使用节点连接来求余数:
- Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)
- 玩转oracle 11g(11):开启归档模式
- 《SpringCloud超级入门》Eureka自我保护模式和InstanceID的配置《十四》
- UVA 12904 Load Balancing 暴力
- WPFのDecorator 、Adorner和AdornerDecorator
- IAR中如何实时观察变量值
- 漫画:什么是神秘的“凯利公式”?
- java文件迁移工具,Java的迁移
- 中英文对照 —— 缩略词
- GIT 密钥生成工具puttygen使用技巧
- tbslog乱码转换_tbslog乱码转换
- css 隐藏滚动条 但是可以滚动
- vue——一个页面实现音乐播放器
- 开发微领地小秘系统的公司
- 国内顶级程序员都有谁?说说你心中的互联网巨佬...
- Vue项目img标签图片加载失败/显示不成功,显示默认图片