http://www.lightoj.com/volume_showproblem.php?problem=1070

思路:\({(a+b)}^n =(a+b){(a+b)}^{n-1} \) \((ab)C_{n}^{r}a^{n-r}b{r} = C_{n+2}^{r}a^{n-r+2}b{r} - a^{n+2} - b^{n+2} \)

综上\( f(n) = (a+b)f(n-1)-(ab)f(n-2) \)

/** @Date    : 2016-12-19-19.53
* @Author : Lweleth (SoungEarlf@gmail.com)
* @Link : https://github.com/
* @Version :
*/
#include<bits/stdc++.h>
#define LL long long
#define PII pair
#define MP(x, y) make_pair((x),(y))
#define fi first
#define se second
#define PB(x) push_back((x))
#define MMG(x) memset((x), -1,sizeof(x))
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std; const int INF = 0x3f3f3f3f;
const int N = 1e5+20;
const double eps = 1e-8;
typedef unsigned long long ull; struct matrix
{
ull mt[2][2];
void init()
{
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
mt[i][j] = 0;
}
void cig()
{
for(int i = 0; i < 2; i++)
mt[i][i] = 1;
}
}; matrix mul(matrix a, matrix b)
{
matrix c;
c.init();
for(int i = 0; i < 2; i++)
for(int j = 0; j < 2; j++)
for(int k = 0; k < 2; k++)
{
c.mt[i][j] += a.mt[i][k] * b.mt[k][j];
}
return c;
} matrix fpow(matrix a, LL n)
{
matrix r;
r.init();
r.cig();
while(n > 0)
{
if(n & 1)
r = mul(r, a);
a = mul(a, a);
n >>= 1;
}
return r;
} ull fun(LL p, LL q, LL n)
{
if(n < 1)
{
return 2;
}
matrix base;
base.mt[0][0] = p;
base.mt[0][1] = -q;
base.mt[1][0] = 1;
base.mt[1][1] = 0;
base = fpow(base, n - 1);
ull ans = base.mt[0][0] * p + base.mt[0][1] * 2;
return ans;
} int main()
{
int T;
int cnt = 0;
cin >> T;
while(T--)
{
LL n, p , q;
scanf("%lld%lld%lld", &p, &q, &n);
ull ans = fun(p, q, n);
printf("Case %d: %llu\n", ++cnt, ans);
}
return 0;
}
//f(n) = (a+b)*f(n-1) - (ab)*f(n-2)

最新文章

  1. 两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)
  2. Memcached驱动(C#)
  3. BT5更新源
  4. 【原】Infragistics.Win.UltraWinGrid.UltraGrid 增加行号
  5. 关于cocoapods添加静态库的奇葩配置
  6. 行为树(Behavior Tree)实践(1)– 基本概念
  7. JavaWeb学习笔记--Listener
  8. php获取网页内容方法 小偷程序 采集程序
  9. PostGis常用函数中文介绍
  10. pysvn 相关
  11. css:伪类和伪元素
  12. Angularjs 滚动条控制
  13. MySql安装与使用(linux)
  14. Linux 磁盘使用查看 查看使用磁盘程序 Monitoring disk activity in linux
  15. java基础基础总结----- 常用DOS命令(一)
  16. 把Excel的数据导入到数据库
  17. Vue 框架-06-条件语句 v-if 实现选项卡效果
  18. 终于想明白一些事,关于NAS
  19. 系统管理命令之logname
  20. BZOJ1252:序列终结者

热门文章

  1. Java 学习笔记 ------第四章 认识对象
  2. TensorFlow:NameError: name ‘input_data’ is not defined
  3. Windows 10 系统下Python环境的搭建与配置
  4. C#高级编程 (第六版) 学习 第二章:C#基础
  5. Java第一次笔记
  6. SQL Server bit数据类型
  7. Kafka及Spring Cloud Stream
  8. 【bzoj4182】Shopping 树的点分治+dfs序+背包dp
  9. 洛谷 Roy&amp;October之取石子
  10. python中括号的使用