AOJ662 越来越快

来源:互联网 发布:开设网络教育的学校 编辑:程序博客网 时间:2024/05/17 02:44

Description
Viky最近对数列有很大的兴趣,比如斐波那契数列。但研究斐波那契数列的人太多了,Viky决定用递推公式定义一种新的数列,并命名为Viky数列。Viky数列定义如下:
V(1) = X, V(2) = Y;
V(n) = A * V(n-2) + B * V(n-1), n≥3;

问:给出整数m,问Viky数列的前m项和sum。

Input
第1行:测试数据组数t;
接下来依次是这t组数据,对于每一组数据:
第1行:X Y A B,有X,Y,A,B≥0;
第2行:m, m≥0。

Output
一共t行,第i行对于第i组数据的答案。

Sample Input
OriginalTransformed
11 2 1 16

Sample Output
OriginalTransformed
32

Hint
所给数据及最后的结果sum均为整数,且保证取值范围都在区间[0,231)内。


第六届网络赛C题


/***********************************************************************************************************************题意:略思路:非常坑的一题... 题目不难 数据太坑..比赛时玩了1个半小时泥巴233333可以用矩阵做(我没学= =不明白...)比较好想的就是和斐波那契数列差不多 递推 然后求和 这都没问题要考虑2种特殊情况...首先 a,b都是0 则除了开头两个xy以外 其他都是0 如果此时不制止的话 2^30的数据 没有数组能开的下..一直RERERE然后 x,y都是0的时候同理...这地方太坑了 写这题的时候我就无限RE...不要担心如果不为0的时候2^30也RE...因为这个数列最小的情况就是斐波那契数列 而斐波那契数列到50的时候就已经非常大了..所以这题其他几个数据非常小 Victoria说出数据的时候都是%3 ..数据都是小与3的..***********************************************************************************************************************/#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <vector>#include <ctime>using namespace std;int v[1111111];int main(){//freopen("data.in" , "r" , stdin);int t; scanf("%d" , &t);while(t--){int x , y , a , b; scanf("%d%d%d%d" , &x , &y , &a , &b);int m; scanf("%d" , &m);if(m == 0){printf("0\n");continue;}if(m == 1){printf("%d\n" , x);continue;}if(m == 2){printf("%d\n" , x + y);continue;}if(!a && !b){printf("%d\n" , x + y);continue;}if(!x && !y){printf("0\n");continue;}v[1] = x;v[2] = y;int sum = x + y;for(int i = 3 ; i <= m ; i ++){v[i] = a * v[i - 2] + b * v[i - 1];sum += v[i];}printf("%d\n" , sum);}return 0;}




0 0
原创粉丝点击