今天下午刚起来眼睛就比較涨,,并且还有点恶心,唉。结果一直不在状态。并且这个题太坑了。。

。。

点击此处即可传送 Hit 2255

Maybe ACMers of HIT are always fond of fibonacci numbers, because it is so beautiful. Don't you think so? At the same time, fishcanfly always likes to change and this time he thinks about the following series of numbers which you can guess is derived from the definition of fibonacci number. 

The definition of fibonacci number is: 

f(0) = 0, f(1) = 1, and for n>=2, f(n) = f(n - 1) + f(n - 2) 

We define the new series of numbers as below: 

f(0) = a, f(1) = b, and for n>=2, f(n) = p*f(n - 1) + q*f(n - 2),where p and q are integers. 

Just like the last time, we are interested in the sum of this series from the s-th element to the e-th element, that is, to calculate ."""" 

Great!Let's go! 

Input 

The first line of the input file contains a single integer t (1 <= t <= 30), the number of test cases, followed by the input data for each test case. 

Each test case contains 6 integers a,b,p,q,s,e as concerned above. We know that -1000 <= a,b <= 1000,-10 <= p,q <= 10 and 0 <= s <= e <= 2147483647. 

Output 

One line for each test case, containing a single interger denoting S MOD (10^7) in the range [0,10^7) and the leading zeros should not be printed. 

Sample Input
2
0 1 1 -1 0 3
0 1 1 1 2 3 Sample Output
2
3

题目大意:

就是给你好几个数,分别表示什么意思,看题即可了;

解题思路:矩阵乘法,递推公式,

注意了,注意了,千万不要用全局变量

if(ans < 0)

ans += mod;

printf(“%lld\n”,ans);

}

return 0;

}

!!!!

!!

/*
2015 - 8 - 14 下午
Author: ITAK 今天很很的不顺心啊。。。。 今日的我要超越昨日的我,明日的我要胜过今日的我,
以创作出更好的代码为目标。不断地超越自己。
*/
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 3;
const int mod = 1e7;
typedef long long LL;
typedef struct
{
LL m[maxn][maxn];
} Matrix;
// LL a, b, s, e, q, p;千万不要用全局变量
Matrix P = {0,0,0,
1,0,0,
0,0,1
};
Matrix I = {1,0,0,
0,1,0,
0,0,1
};
Matrix matrix_mul(Matrix a, Matrix b)
{
int i, j, k;
Matrix c;
for(i=0; i<maxn; i++)
{
for(j=0; j<maxn; j++)
{
c.m[i][j] = 0;
for(k=0; k<maxn; k++)
{
a.m[i][k] = (a.m[i][k]%mod + mod) % mod;
b.m[k][j] = (b.m[k][j]%mod + mod) % mod;
c.m[i][j] += (a.m[i][k] * b.m[k][j]) % mod;
}
c.m[i][j] = (c.m[i][j]%mod + mod) % mod;
}
}
return c;
} Matrix quick_mod(LL m)
{
Matrix ans = I, b = P;
while(m)
{
if(m & 1)
ans = matrix_mul(ans, b);
m >>= 1;
b = matrix_mul(b, b);
}
return ans;
}
int main()
{
int t;
LL a, b, q, p, e, s;
scanf("%d",&t);
while(t--)
{ Matrix tmp1, tmp2;
LL ans, ans1, ans2;
cin>>a>>b>>p>>q>>s>>e;
P.m[0][0]=p;
P.m[0][1]=q;
P.m[2][0]=p;
P.m[2][1]=q;
if(s-2 > 0)
{
tmp1 = quick_mod(s-2);
ans1 = (b*tmp1.m[2][0])%mod + (a*tmp1.m[2][1])%mod + ((a+b)*tmp1.m[2][2])%mod;
}
else
{
if(s == 0)
ans1 = 0;
if(s == 1)
ans1 = a;
if(s == 2)
ans1 = a + b ;
}
if(e-1 > 0)
{
tmp2 = quick_mod(e-1);
ans2 = (b*tmp2.m[2][0])%mod + (a*tmp2.m[2][1])%mod + ((a+b)*tmp2.m[2][2])%mod;
}
else
{
if(e == 0)
ans2 = a;
else
ans2 = b+a;
}
ans1 = (ans1%mod+mod) % mod;
ans2 = (ans2%mod+mod) % mod;
//cout<<ans1<<" "<<ans2<<" ";
ans = (ans2 - ans1 + mod) % mod;
if(ans < 0)
ans += mod;
printf("%lld\n",ans);
}
return 0;
}

Hit 2255 Not Fibonacci的更多相关文章

  1. HIT 2255 Not Fibonacci(矩阵高速幂)

    #include <iostream> #include <cstdio> #include <cstring> using namespace std; cons ...

  2. fibonacci数列的和取余(2)

    Maybe ACMers of HIT are always fond of fibonacci numbers, because it is so beautiful. Don't you thin ...

  3. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  4. #26 fibonacci seqs

    Difficulty: Easy Topic: Fibonacci seqs Write a function which returns the first X fibonacci numbers. ...

  5. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  6. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  7. 斐波拉契数列(Fibonacci) 的python实现方式

    第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... >>> fibs = [0,1] >>&g ...

  8. [LeetCode] Design Hit Counter 设计点击计数器

    Design a hit counter which counts the number of hits received in the past 5 minutes. Each function a ...

  9. fibonacci数列(五种)

    自己没动脑子,大部分内容转自:http://www.jb51.net/article/37286.htm 斐波拉契数列,看起来好像谁都会写,不过它写的方式却有好多种,不管用不用的上,先留下来再说. 1 ...

随机推荐

  1. friend(hdoj 1719)

    Friend Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. 名词解释 —— 抄送(cc)、银弹(silver bullet)

    抄送(Carbon Copy,carbon copy 本身的含义是复写本,副本),又简称为 CC. 在现代汉语中,含有抄写与送达的双重意思. 在网络术语中,抄送就是将邮件同时发送给收信人以外的人, 用 ...

  3. 【NOIP 2011】 计算系数

    [题目链接] https://www.luogu.org/problemnew/show/P1313 [算法] 二项式定理 [代码] #include<bits/stdc++.h> usi ...

  4. 如何卸载Win10自带Xbox、人脉、天气等应用?

    Win10中的Modern应用一般可在右键菜单中进行卸载,不过某些自带的Modern应用,比如Xbox.天气.人脉.照片等应用是无法在右键菜单中进行卸载的.如果你有卸载这些应用的需求,可参考下面的方法 ...

  5. Centos 6 搭建邮箱服务器教程

    Centos 6 搭建邮箱服务器主要是是包括了Postfix, Dovecot和 MySQL了,下文我们详细的为各位介绍Centos 6 搭建邮箱服务器教程(Postfix, Dovecot和 MyS ...

  6. nodejs supervisor安装

    使用supervisor提高nodejs调试效率 用超级用户运行npm -g install supervisor命令,说是顺 >$ sudo npm -g install supervisor ...

  7. Mysql重复数据查询置为空

    前两天产品有个需求,相同的商品因为价格不同而分开展示,但是明细还是算一条明细,具体区分展示出商品的价格和数量信息,其他重复的商品信息要置空. 需求并不难,用程序代码循环处理就可以了.但是后面涉及到打印 ...

  8. Python笔记16-------类

    1.类的定义 (1)#括号中要加入父类,如果没有则默认为object,万类之源 class 类名(父类): '类的文档字符串' 类体代码 若类什么都不做,则类只作为命名空间,仅作为一个容器. (2)类 ...

  9. CSS - 内联元素span 强制换行失败的可能原因

    在CSS中,标签span 强制换行失败:(使用display:block) 可能原因:float:left   or  float:right

  10. [CodeForces]981C Useful Decomposition

    李煜东dalao今天给我们讲课了QwQ ppt上一道题 英文题说一下题意吧,以后又看不懂了 将一棵树分割成多个简单路径,每个边只能在一条路径上,但至少有一个公共节点. 输出简单路径分割方法/No 由题 ...