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】相关推荐

  1. FZU 2238 - Daxia Wzc's problem(Lucas)

    Problem 2238 Daxia & Wzc's problem Accept: 42    Submit: 166 Time Limit: 1000 mSec    Memory Lim ...

  2. fzu 2238 Daxia Wzc's problem

    Problem 2238 Daxia & Wzc's problem Accept: 38    Submit: 136 Time Limit: 1000 mSec    Memory Lim ...

  3. FZU 2238 Daxia Wzc's problem

    Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...

  4. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2238 Daxia & Wzc's problem Accept: 0    Submit: 0 Time Limit ...

  5. FZU Problem 2238 Daxia Wzc's problem

    Daxia在2016年5月期间去瑞士度蜜月,顺便拜访了Wzc,Wzc给他出了一个问题: Wzc给Daxia等差数列A(0),告诉Daxia首项a和公差d; 首先让Daxia求出数列A(0)前n项和,得 ...

  6. Problem 2238 Daxia Wzc's problem 1627 瞬间移动

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1627 http://acm.fzu.edu.cn/problem.php ...

  7. 【数论】FOJ 2238 Daxia Wzc's problem

    题目链接: http://acm.fzu.edu.cn/problem.php?pid=2238 题目大意: 已知等差数列A(0)的首项a和公差d,求出数列A(0)前n项和,得到新数列A(1);以此类 ...

  8. FZU 2240 Daxia Suneast's problem

    博弈,$SG$函数,规律,线段树. 这个问题套路很明显,先找求出$SG$函数值是多少,然后异或起来,如果是$0$就后手赢,否则先手赢.修改操作和区间查询的话可以用线段树维护一下区间异或和. 数据那么大 ...

  9. FZU 2239 Daxia Yayamao's problem 斜率优化

    题目链接点这里 我们先把a从小到大排序,询问x从小到大排序 我们可以发现,对于某对 ai和a(i+1)..如果我们有xi,此时取a(i+1)可以使xi的函数值最大的话,那么对于任意大于xi的x,取a( ...

最新文章

  1. 2、安装Lync Server 2013
  2. Facebook推开源软件平台ParlAI,能否解决机器人灵魂缺失问题?
  3. java中iscontinue意思_Java 中return、continue和break的区别
  4. maya 中使用节点连接来求余数:
  5. Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)
  6. 玩转oracle 11g(11):开启归档模式
  7. 《SpringCloud超级入门》Eureka自我保护模式和InstanceID的配置《十四》
  8. UVA 12904 Load Balancing 暴力
  9. WPFのDecorator 、Adorner和AdornerDecorator
  10. IAR中如何实时观察变量值
  11. 漫画:什么是神秘的“凯利公式”?
  12. java文件迁移工具,Java的迁移
  13. 中英文对照 —— 缩略词
  14. GIT 密钥生成工具puttygen使用技巧
  15. tbslog乱码转换_tbslog乱码转换
  16. css 隐藏滚动条 但是可以滚动
  17. vue——一个页面实现音乐播放器
  18. 开发微领地小秘系统的公司
  19. 国内顶级程序员都有谁?说说你心中的互联网巨佬...
  20. Vue项目img标签图片加载失败/显示不成功,显示默认图片

热门文章

  1. 2023年湖北下半年中级职称申报中级职称评审申报条件是什么?
  2. 【MM32F5270】RT-Thread SPI 驱动适配指南
  3. SpringCloud07_消息总线(Bus)
  4. PDF文件解密方法是什么?PDF转换器有什么优点?
  5. golang slice 详解
  6. 低级格式化的主要作用(转)
  7. showModalDialog用法
  8. html的爱恨情仇—部署HTMl5结婚微信电子请柬(含源码)
  9. 回顾2022,展望2023,一个普通98年程序员的自述和分享
  10. 项目管理类,PMP和软考的区别