hdu 5950
来源:互联网 发布:淘宝助理无法显示订单 编辑:程序博客网 时间:2024/06/19 00:21
题目链接:点击打开链接
题解思路:由(n+1)^4 = n^4 + 4n^3 + 6n^2 + 4n + 1,(n+1)^3 = n^3 + 3n^2 + 3n + 1...我可以做出一个7*7的矩阵,递推所有的函数
代码:
#include<bits/stdc++.h>using namespace std;typedef long long ll;const ll mod = 2147493647;int n,a,b;struct data{ ll matr[7][7]; //data(){ memset(matr,0,sizeof(matr)); }};const data multi={1,1,0,0,0,0,0, 2,0,0,0,0,0,0, 1,0,1,0,0,0,0, 4,0,4,1,0,0,0, 6,0,6,3,1,0,0, 4,0,4,3,2,1,0, 1,0,1,1,1,1,1};data newdata(data A,data B){ data c; for(int i=0;i<7;i++){ for(int j=0;j<7;j++){ c.matr[i][j] = 0; for(int k=0;k<7;k++) c.matr[i][j] = (c.matr[i][j]+A.matr[i][k]*B.matr[k][j]%mod)%mod; } } return c;}data kuaisu(int x){ data ans,ret = multi; ans.matr[0][0] = b,ans.matr[0][1] = a; for(int i=2;i<7;i++) ans.matr[0][i] = ll(pow(2.0,6-i)); for(int i=1;i<7;i++) for(int j=0;j<7;j++) ans.matr[i][j] = 0; while(x){ if(x&1) ans = newdata(ans,ret); x >>= 1; ret = newdata(ret,ret); } return ans;}int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&a,&b); if(n==1) printf("%d\n",a); else if(n==2) printf("%d\n",b); else{ n -= 2; data ans = kuaisu(n); printf("%lld\n",ans.matr[0][0]); } } return 0;}
阅读全文
0 0
- hdu 5950
- HDU 5950
- hdu 5950
- HDU 5950 Recursive sequence
- HDU 5950(Recursive sequence)
- HDU 5950 Recursive sequence
- HDU 5950 Recursive sequence
- hdu 5950 Recursive sequence
- hdu 5950 Recursive sequence
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- 在spring mvc应用中创建第一个Controller
- c语言:用switch模拟售货机
- android 使用控件webView 与 vue交互
- Java 8 函数式编程学习笔记
- Java文件操作自己做的一些小实验
- hdu 5950
- iview 爬坑 menu
- ubuntu install google chrome software
- 自动化运维平台----Django搭建之路
- 动态规划之二
- 朴素贝叶斯Naive Bayes-机器学习ML
- 抽象类与接口
- 运算符与分支结构
- Leetcode:475. Heaters (利用二分binary search)