NYISTME 1300 递推求值
来源:互联网 发布:三浦翔平人不好知乎 编辑:程序博客网 时间:2024/04/19 07:48
M - 递推求值
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluDescription
给你一个递推公式:
f(x)=a*f(x-2)+b*f(x-1)+c
并给你f(1),f(2)的值,请求出f(n)的值,由于f(n)的值可能过大,求出f(n)对1000007取模后的值。
注意:-1对3取模后等于2
Input
第一行是一个整数T,表示测试数据的组数(T<=10000) 随后每行有六个整数,分别表示f(1),f(2),a,b,c,n的值。 其中0<=f(1),f(2)<100,-100<=a,b,c<=100,1<=n<=100000000 (10^9)
Output
输出f(n)对1000007取模后的值
Sample Input
21 1 1 1 0 51 1 -1 -10 -100 3
Sample Output
5999896
#include<cstdio>long long aa[4][4],t[4][4],d[4][4];int main(){long long f1,f2,a,b,c,n,i,j,k,T;scanf("%lld",&T);while(T--){scanf("%lld%lld%lld%lld%lld%lld",&f1,&f2,&a,&b,&c,&n);aa[1][1]=b,aa[1][2]=a,aa[1][3]=c;aa[2][1]=1,aa[2][2]=0,aa[2][3]=0;aa[3][1]=0,aa[3][2]=0;aa[3][3]=1;d[1][1]=f2,d[2][1]=f1,d[3][1]=1;if(n==1)printf("%lld\n",f1);else if(n==2)printf("%lld\n",f2);else{n=n-2;while(n!=0){if(n%2==1){for( i=1;i<=3;i++){for( j=1;j<=1;j++){t[i][j]=0; for( k=1;k<=3;k++)t[i][j]+=aa[i][k]*d[k][j];}}for( i=1;i<=3;i++)for( j=1;j<=1;j++){if(t[i][j]<0)d[i][j]=(t[i][j]+1000007)%1000007;elsed[i][j]=t[i][j]%1000007;}}n/=2;{if(n==0)continue;for( i=1;i<=3;i++){for( j=1;j<=3;j++){t[i][j]=0; for( k=1;k<=3;k++)t[i][j]+=aa[i][k]*aa[k][j];}}for(int i=1;i<=3;i++)for(int j=1;j<=3;j++){if(t[i][j]<0)aa[i][j]=(t[i][j]+1000007)%1000007;//这儿要特别注意elseaa[i][j]=t[i][j]%1000007;}} }printf("%lld\n",d[1][1]);} }return 0;}
阅读全文
0 0
- NYISTME 1300 递推求值
- acm-递推求值
- nyoj301 递推求值
- NYOJ301-递推求值
- 蓝桥杯 递推求值
- 递推求值
- 递推求值
- 蓝桥杯-递推求值
- nyoj301递推求值
- 递推求值
- 递推求值
- nyoj 301 递推求值
- Nyoj 301 递推求值
- NYOJ 301 递推求值
- ADV-218 递推求值
- nyoj301递推求值【矩阵快速幂】
- nyoj301——递推求值
- nyoj 301 递推求值 矩阵幂
- hdu3047 (带权并查集)
- ICommand简单的使用和开发
- eBay数据科学家李睿:自然语言处理在eBay的技术实践 数据 网络 类别 技术 分类器 阅读1593 近日,在飞马网主办的“FMI人工智能&大数据高峰论坛”上,来自eBay的数据科学家李睿
- 浅谈javaw.exe的作用
- 【勤哲应用】用勤哲Excel服务器做人事工资管理系统
- NYISTME 1300 递推求值
- poj-2773(数论+容斥原理+二分)
- Reader 和 Writer
- Linux设备驱动模型框架分析(五)——LDDM的展现:sysfs
- hdu 6127 计算几何模拟题(旋转扫描线)
- MFC内存绘图设备封装类
- Game of the Rows CodeForces
- 【yoyo】关于java中内部类的使用
- AngularJs学习之路(九)