FZU 1683 纪念SlingShot(矩阵水)
纪念SlingShot
【题目链接】纪念SlingShot
【题目类型】矩阵水
&题解:
这代码调了十多分钟,结果是Mul没返回值,好zz啊.
令sum(n)=sum(n-1)+f(n) 那么sum(n)就是答案,可以得出矩阵:

转载自:http://blog.csdn.net/chenguolinblog/article/details/10309423
&代码:
#include <cstdio>
#include <bitset>
#include <iostream>
#include <set>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <map>
#include <queue>
#include <vector>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long ll;
const int si=4;
ll n,M=2009,K;
struct mat
{
ll m[si][si];
}A;
void DF(mat A)
{
for(int i=0;i<si;i++)
{
for(int j=0;j<si;j++)
cout<<A.m[i][j]<<" ";
cout<<endl;
}
}
mat Mul(mat a,mat b)
{
mat c;
for(int i=0;i<si;i++)
for(int j=0;j<si;j++){
c.m[i][j]=0;
for(int k=0;k<si;k++){
c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%M;
}
}
//TMD 这块居然没返回c 找了半天bug 真ZZ
return c;
}
mat bPow(mat a,ll z)
{
mat b;
for(int i=0;i<si;i++)for(int j=0;j<si;j++)
b.m[i][j]=(i==j);
while(z){
if(z&1)
b=Mul(b,a);
a=Mul(a,a);
z>>=1;
}
return b;
}
int tb[si];
void Init()
{
tb[0]=5,tb[1]=3,tb[2]=1,tb[3]=9;
memset(A.m,0,sizeof(A.m));
A.m[0][0]=3,A.m[0][1]=2,A.m[0][2]=7;
for(int i=0;i<si;i++) A.m[3][i]=A.m[0][i];
A.m[3][3]=A.m[2][1]=A.m[1][0]=1;
}
int main()
{
freopen("E:1.txt","r",stdin);
int T;cin>>T;
while(T--){
cin>>n;
Init();
if(n<=2){
printf("Case %d: ",++K);
cout<<tb[2-n]<<endl;
}
else{
A=bPow(A,n-2);
ll ans=0;
for(int i=0;i<si;i++){
ans=(ans+A.m[3][i]*tb[i])%M;
}
printf("Case %d: ",++K);
cout<<ans<<endl;
}
}
return 0;
}
FZU 1683 纪念SlingShot(矩阵水)的更多相关文章
- fuzhou 1683 纪念SlingShot ***
Problem 1683 纪念SlingShot Accept: 361 Submit: 1287Time Limit: 1000 mSec Memory Limit : 32768 KB ...
- FOJ 1683 纪念SlingShot(矩阵快速幂)
C - 纪念SlingShot Description 已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5, ...
- 纪念SlingShot 矩阵
第一次独立做矩阵,只WA了一次,好高兴~~ 题意:已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5,对于给 ...
- FZU 2102 Solve equation(水,进制转化)&& FZU 2111(贪心,交换使数字最小)
C Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Pra ...
- HDU1757-A Simple Math Problem,矩阵快速幂,构造矩阵水过
A Simple Math Problem 一个矩阵快速幂水题,关键在于如何构造矩阵.做过一些很裸的矩阵快速幂,比如斐波那契的变形,这个题就类似那种构造.比赛的时候手残把矩阵相乘的一个j写成了i,调试 ...
- ACM: FZU 2110 Star - 数学几何 - 水题
FZU 2110 Star Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Pr ...
- FZU 2205 据说题目很水
2205 据说题目很水 Accept: 199 Submit: 458Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Descr ...
- fzu 2135 数字游戏 【水题】
Problem 2135 数字游戏 Accept: 253 Submit: 392Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- codevs 1683 车厢重组(水题日常)
时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 题目描述 Description 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转.一个车站的职工 ...
随机推荐
- python模块之__future__模块
Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动.有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了.为了在低版本中可以使用高版本的新特性 ...
- 使用flask写移动端API
环境 python 3.7 使用pip 安装falsk pip3 install flask #!flask/bin/python from flask import Flask, jsonify, ...
- mongodb 数组查询
转发自:https://blog.csdn.net/leshami/article/details/55049891 一.演示环境及数据> db.version() 3.2.11 > db ...
- jpa持久化对象四种状态
自己理解,不完全正确,大致如下: 例:某实体类 Person(int id,string name,int age); id 为主键. 新建:new Person(), 并且未给 id 赋值 ...
- 2018/03/08 每日一个Linux命令 之 chattr/lsattr
每日一个Linux命令 2018-03-08 Linux 命令 chattr/lsattr chattr [-参数] [+/-属性] [文件或者目录] 经过今天没有对铃,粥熬糊了,我就知道...... ...
- 从网络上筛选"流媒体"的相关文章
1> 雷神的博客专栏https://blog.csdn.net/leixiaohua1020 [总结]FFMPEG视音频编解码零基础学习方法https://blog.csdn.net/leixi ...
- mint-ui是什么?怎么使用?说出至少三个组件使用方法?
mint-ui是基于vue的前端组件库.npm安装,然后import样式和js,vue.use(mintUi)全局引入.在单个组件局部引入:import { Toast } from 'mint-ui ...
- C++的类大小
有以下C++类 #pragma pack(push) #pragma pack(1) class task /*:public OSThread*/{ //public: // void Entry( ...
- win10安装pycharm及汉化包
PyCharm 是一款功能强大的 Python 编辑器,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,那么如何安装pycharm呢?都是英文看不懂有没有汉化版呢?跟ytkah一起 ...
- 卸载postgresql数据库
卸载postgresql数据库有两种方法,第一种一个个包卸载,第二种全部卸载.做这些之前请先做好备份,以防意外! 1.1.查询出postgres数据库,用命令rpm -qa |grep postgre ...