hdoj 1588 学好线代与数学
按部就班,超级简单,虽然不是一次过的。。。错在那个long long数据问题还是要注意。。也不知道要怎么注意;还是说题目吧。。。
思路看main函数
其他函数功能也是非常有用!代码比较丑。。。见谅
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string.h>
#include <math.h>
#include<stdlib.h>
#include <queue>
#include <set>
#include <algorithm>
using namespace std;
long long mod;
struct asd{
long long a[4][4];
};
asd ak; //代表A的k次
asd mul(asd x,asd y) //矩阵乘法
{
int i,j,k;
asd ans;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
ans.a[i][j]=0;
for(k=0;k<2;k++)
{
ans.a[i][j]+=(x.a[i][k]*y.a[k][j])%mod;
ans.a[i][j]%=mod;
}
}
}
return ans;
}
asd add(asd x,asd y) //矩阵加法
{
int i,j,k;
asd ans;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
ans.a[i][j]=(x.a[i][j]+y.a[i][j])%mod;
}
}
return ans;
}
asd quick(asd y,long long g) //快速幂
{
asd x;
int i,k,j;
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
if(i==j)
x.a[i][i]=1;
else
x.a[i][j]=0;
}
}
while(g)
{
if(g%2==1)
x=mul(x,y);
y=mul(y,y);
g/=2;
}
return x;
}
asd slove(long long z) //计算S(n);S(n)代表A的1次加到A的n次;
{
if(z==1)
return ak;
asd ans=slove(z/2);
asd cur;
if(z%2==1)
{
cur=quick(ak,z/2+1);
ans=add(ans,mul(ans,cur));
ans=add(cur,ans);
}
else
{
cur=quick(ak,z/2);
ans=add(ans,mul(ans,cur));
}
return ans;
}
/*反正就想算数一样,斐波那契的那个矩阵肯定知道(不知道出门左转去学一下矩阵快速幂),假设是A,那么也就是题目要求
就是计算A的0+b次到A的k(n-1)+b次的和,次数的相加拆开就是相乘(不知道去复读初中),那么,把A的b次提出来,A^b(E+A^K+A^2K+...A^(n-1)K)
然后把A^K看作整体就是什么!!!还不知道看main函数代码。。草稿纸上列一列就知道了。。。
*/
int main()
{
long long k,b,n;
while(~scanf("%lld%lld%lld%lld",&k,&b,&n,&mod))
{
asd fb,ea,ans,y,sk;
ea.a[0][0]=1;ea.a[0][1]=0; //单位矩阵
ea.a[1][0]=0;ea.a[1][1]=1;
y.a[0][0]=1;y.a[0][1]=1;
y.a[1][0]=1;y.a[1][1]=0;
fb=quick(y,b); //求一个A的b次
ak=quick(y,k); //求一个A的K次
sk=slove(n-1); //求S(K);
sk=add(sk,ea); //把没加的E加上
ans=mul(sk,fb); //乘一波
printf("%lld\n",ans.a[0][1]); //这里还是看你的线代怎么样了。。
}
return 0;
}
hdoj 1588 学好线代与数学的更多相关文章
- NYOJ 67 三角形面积(线代,数学)
三角形面积 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 给你三个点,表示一个三角形的三个顶点,现你的任务是求出该三角形的面积 输入 每行是一组测试数据,有6个 ...
- 山东理工大学第七届ACM校赛-飞花的线代 分类: 比赛 2015-06-26 10:29 10人阅读 评论(0) 收藏
飞花的线代 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 飞花壕的线代一直非常的壕(好),线代考试每次都是全班第一.一次,飞花壕在预习 ...
- 线代笔记 #01# 几何水平上的理解 VS. 数值水平上的理解
源: 线性代数的本质 内容来自字幕. Let me quote without further comment from Dieudonné's "Foundations of Modern ...
- numpy--深度学习中的线代基础
参考自 微信公众号--深度学习世界(http://mp.weixin.qq.com/s?__biz=MzI4MDMwMDM3NA==&mid=2247484616&idx=1& ...
- 线代: N阶行列式
线性变换 将 (x, y) 变成 (2 x + y, x - 3 y) 就叫做线性变换, 这就是矩阵乘法, 用于表示一切线性变换. 几何上看, 把平面上的每个点 (x, y) 都变到 (2 x + y ...
- back propogation 的线代描述
参考资料: 算法部分: standfor, ufldl : http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial 一文弄懂BP:https: ...
- 线代第六章定义&定理整理(持续更新中)
Chapter 6 6.1 Inner Products and Norms Definition (inner product). Let V be a vector space over F. A ...
- 数据挖掘 与 Web开发何去何从
(0)引子 以下以现实生活中的一个实例引出本博客的探究点.或许类似的情况正发生在你的身边. 小弟工作5年了,近期有点迷茫. 上一份工作在一家比較大的门户站点做web开发和移动互联网数据挖掘(人手比較紧 ...
- Python 矩阵(线性代数)
Python 矩阵(线性代数) 这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌. 笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对& ...
随机推荐
- Linux 中权限的再讨论( 下 )
前言 上篇随笔讲述了Linux中权限的大致实现机制以及目录权限的相关规则.本文将讲解Linux中的三种特殊权限:SUID,SGID,Sticky权限.看完这两篇文章,你一定会对Linux的权限有个更深 ...
- 【BZOJ2216】[Poi2011]Lightning Conductor 决策单调性
[BZOJ2216][Poi2011]Lightning Conductor Description 已知一个长度为n的序列a1,a2,...,an.对于每个1<=i<=n,找到最小的非负 ...
- React深入源码--了解Redux用法之Provider
在Redux中最核心的自然是组件,以及组件相关的事件与数据流方式.但是我们在Redux中并没有采用传统的方式在getInitialState()中去初始化数据,而是采用Provider统一处理,省去了 ...
- 2014-8-17 note
一.方格求最短路径 二.用两种颜色去染排成一个圈的6个棋子,如果通过旋转得到则只算一种,一共有多少种染色模式 设两种颜色为黑白 全黑1种+全白1种=2 1黑5白(1种)+1白5黑(1种)=2种 2黑4 ...
- PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/redis.so' - /usr/lib64/php/modules/redis.so: undefined symbol: igbinary_serialize in Unknown on line 0
网上找到两种解决方法, 1.先删除php-pecl-redis,再用pecl install redis 2.安装php-igbinary模块,不过我安装时包冲突了,没有安装成功,所以用了第一种方法
- Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系
在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...
- JAVA变量初始化赋值null
在Java中,null值表示引用不指向任何对象.运行过程中系统发现使用了这样一个引用时·可以立即停止进一步的访问,不会给系统带来任何危险. 1.如果是对象的field的话那么系统在初始化对象的时候会 ...
- leetcode 792. Number of Matching Subsequences
Given string S and a dictionary of words words, find the number of words[i] that is a subsequence of ...
- html body div height: 100%;
最近做了测试 html{ height: 100%;//全部内容高度,包括滚动出现的内容 background-color:#000;} body{height: 100%;//只一页屏幕,用作滚动的 ...
- TestNG基本注解
TestNG的注解: 注解 描述 @BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中. @AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后. @Befor ...