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);

规律题,首先写出 a、a+d、a+2d、a+3d...这个容易写出

下面一行也容易写出:a、2a+d、3a+3d....

再下一行,确实难写,但是通过上面两行可以得出,dp[i][j] = dp[i-1][j] + dp[i][j-1]

然后可以顺利写出后面的,找到通项公式。

ans = C(m+i-1,m)*a + C(m+i-1,i-2)*d

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;#include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
LL a,d,m,i;
const int MOD = 1000000007;
LL quick_pow (LL a,LL b,LL MOD)
{//求解 a^b%MOD的值LL base=a%MOD;LL ans=1; //相乘,所以这里是1while (b){if (b&1){ans=(ans*base)%MOD; //如果这里是很大的数据,就要用quick_mul
        }base=(base*base)%MOD;    //notice//注意这里,每次的base是自己base倍b>>=1;}return ans;
}
LL C (LL n,LL m,LL MOD)
{if (n<m) return 0; //防止sb地在循环,在lucas的时候if (n==m) return 1;LL ans1 = 1;LL ans2 = 1;LL mx=max(n-m,m); //这个也是必要的。能约就约最大的那个LL mi=n-mx;for (int i = 1; i <= mi; ++i){ans1 = ans1*(mx+i)%MOD;ans2 = ans2*i%MOD;}return (ans1*quick_pow(ans2,MOD-2,MOD)%MOD); //这里放到最后进行,不然会很慢
}void work ()
{if (i==1){printf ("%lld\n",a);return;}LL ans = (C(m+i-1,m,MOD)*a%MOD+C(m+i-1,i-2,MOD)*d%MOD)%MOD;printf ("%lld\n",ans);return ;
}
int main()
{
#ifdef localfreopen("data.txt","r",stdin);
#endifwhile (scanf("%lld%lld%lld%lld",&a,&d,&m,&i)!=EOF) work();return 0;
}

View Code

转载于:https://www.cnblogs.com/liuweimingcprogram/p/5785258.html

FZU Problem 2238 Daxia Wzc's problem相关推荐

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

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

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

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

  3. fzu 2238 Daxia Wzc's problem

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

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

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

  5. FZU 2238 Daxia Wzc's problem

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

  6. FZU 2238 Daxia Wzc's problem【规律+lucas】

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

  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 Problem 2240 Daxia Suneast's problem(博弈+[单点更新,区间查询]线段树)

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

  9. FZU Problem 2243 Daxia like uber(最短路)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2243 Daxia like uber Accept: 0    Submit: 0 Time Limit: 1000 mSe ...

最新文章

  1. Go goroutine理解
  2. FlexoCalendar周日历出错的解决方法
  3. 全球与中国血管重建装置市场投资现状及发展规划建议报告2022-2028年
  4. chrome for mac html5,javascript – Mac上的Chrome浏览器问题
  5. matlab练习程序(RGB2HSL、HSL2RGB)
  6. 河南洛阳计算机操作题,洛阳中招理化生实验操作考试、信息技术考试下月1日开考...
  7. 【LeetCode】【HOT】98. 验证二叉搜索树(递归)
  8. oracle递归查询出现死循环,oracle 递归查询求出起点、终点问题的解决方法
  9. R语言——决策树模型
  10. 《大学之路》读书笔记(上)范文3700字
  11. 计算机二级java刷题_计算机二级等考 刷题时间安排以及刷题顺序分享
  12. (基于matlab)蒙特卡罗法 之 布丰投针实验 (1/10)
  13. 阿里云技术大咖分享新内容新交互时代下的新技术、新机会
  14. 给正在转行互联网朋友们的一封信
  15. Docker Compose方式安装GitLab
  16. 百思不得姐之广告界面(三)
  17. 亿图图示----科学与软件展示
  18. SPWM与SVPWM的比较
  19. [转]记一次linux(被)入侵,服务器变矿机~
  20. cesium画飞线_Cesium+earthSD实现相机飞行动画

热门文章

  1. python文件读取写入实践_python文件写入实例分析
  2. 《地下城与勇士歼灭贝内尔》回合格斗
  3. android+动画+锯齿,Android当中的防锯齿(Bitmap Canvas )
  4. 关于n对角矩阵数据结构_机器学习与线性代数 - 特殊矩阵
  5. java commons lang 随机数_Apache Common-lang组件里随机数工具类RandomStringUtils的一个bug...
  6. mysql数据库版本不同_mysql数据库版本不同所引起的问题
  7. python设置word背景色_Python数据可视化:WordCloud入门
  8. E1光端机和2M光端机有什么区别?
  9. 工业级以太网交换机的使用情况分析
  10. [渝粤教育] 三江学院 大学生创新基础课程 参考 资料