c语言实现6乘6的的方阵,百炼2786-Pell数列-C语言-矩阵乘法-同余类
#include #define divisor 32767
/************************************************
和斐波那契数列一样,我们只需要将递推矩阵计算k-2次方即可
好吧,我们遇到了一个很尴尬的问题,就是在这个矩阵中a11的增长比
2的k-2次方还快一点,如果用置的数据类型,对于k>64的情况就没办法计算了
所以我们还要考虑这样一个问题:
a(n)=x*2+y
x=m*32767+a
y=n*32767+b
a(n)%32767=(2*a+b)%32767 所以为了防止矩阵越界,每次计算矩阵都只保留模32767的值
*************************************************/
int n,k;
struct matrix
{
long long a11,a12,a21,a22;
};
typedef struct matrix matrix;
long long sum;
matrix origin;
/***********************************************
**函数名:slove
**输入:n-需要将origin矩阵乘方的次数
**输出:origin n次方后的矩阵
**功能:计算origin的n次方
**作者:OrdinaryCrazy
**日期:20170804
**版本:1.0
************************************************/
matrix slove(int n)
{
if(n==1)
return origin;
matrix a,result;
if(n % 2)
{
a=slove(n - 1);
result.a11 = (a.a11 * origin.a11 + a.a12 * origin.a21) % divisor;
result.a12 = (a.a11 * origin.a12 + a.a12 * origin.a22) % divisor;
result.a21 = (a.a21 * origin.a11 + a.a22 * origin.a21) % divisor;
result.a22 = (a.a21 * origin.a12 + a.a22 * origin.a22) % divisor;
}
else
{
a=slove(n / 2);
result.a11 = (a.a11 * a.a11 + a.a12 * a.a21) % divisor;
result.a12 = (a.a11 * a.a12 + a.a12 * a.a22) % divisor;
result.a21 = (a.a21 * a.a11 + a.a22 * a.a21) % divisor;
result.a22 = (a.a21 * a.a12 + a.a22 * a.a22) % divisor;
}
return result;
}
int main()
{
origin.a11=2;
origin.a12=origin.a21=1;
origin.a22=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&k);
if(k>2)
{
matrix result;
result = slove(k - 2);
sum = 2*result.a11 + result.a12;
printf("%d\n",sum % 32767);
}
else
k==1 ? printf("1\n") : printf("2\n");
}
return 0;
}
c语言实现6乘6的的方阵,百炼2786-Pell数列-C语言-矩阵乘法-同余类相关推荐
- ebnf描述c语言语句结构,EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则...
Presentation on theme: "EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构:并用操作语义的方法描述对应的语义规则"- Pre ...
- R语言使用upper.tri函数、lower.tri函数、diag函数改变matrix矩阵上三角形、下三角形、对角线的数值
R语言使用upper.tri函数.lower.tri函数.diag函数改变matrix矩阵上三角形.下三角形.对角线的数值 目录
- 2017电大c语言形考册,(2017年电大)中央广播电视大学c语言程序设计形成性考核册及答案.doc...
(2017年电大)中央广播电视大学c语言程序设计形成性考核册及答案 C语言程序设计形成性作业一 一.选择题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(A). A.main B. ...
- ubuntu16.04在英文状态下安装中文语言包的过程(法一:图形界面的方式) 以及 安装中文语言包后无法选择汉语问题的解决
ubuntu16.04在英文状态下安装中文语言包的过程(法一:图形界面的方式) 以及 安装中文语言包后无法选择汉语问题的解决 参考文章: (1)ubuntu16.04在英文状态下安装中文语言包的过程( ...
- python是用什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...
时间回到30年前,Python 首次亮相.花了20年时间,Python才获得开发者的认可.来到 2019 年,Python已经成为开发人员第二喜欢的语言. 在过去的5年时间里,Python 成为了机器 ...
- python是什么语言开发的-专为人工智能和数据科学而生的Go语言,或将取代Python...
时间回到30年前,Python 首次亮相.花了20年时间,Python才获得开发者的认可.来到 2019 年,Python已经成为开发人员第二喜欢的语言. 在过去的5年时间里,Python 成为了机器 ...
- python语言编程入门先学什么-自学编程入门,先学什么语言好?
强烈推荐Python.其实这个问题在入门阶段一直是争议十分大的问题,n多语言,n多推荐,到最后搞到新手一会听说这种语言适合新手,于是学习这种语言,一会又有人说xx语言是垃圾.弱爆了,学了也没用,之类的 ...
- Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件、C语言中的随机事件、产生二维随机数、圆内均匀取点)
Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件.C语言中的随机事件.产生二维随机数.圆内均匀取点) 目录 一.概率 1.计算机中的概率事件 1.1.C语言中的随机事件 1.2 ...
- 是c语言自带的数据类型吗_计协带你了解C语言程序
点击蓝字关注我们 你知道c语言吗?你对它又了解多少呢?C语言编译链接出来的程序就是软件.硬件是基础,软件是灵魂.硬件功能需要软件操作来体现. c语言是什么意思 C语言是一门面向过程.抽象化的通用程序设 ...
最新文章
- Rendering Problems Exception raised during rendering:
- java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码
- python内置函数sorted(x)的作用是_Python内置filter与sorted函数
- MCtalk教育快报 | 0816
- php 打印变量内存地址_Python合集之Python变量
- 关于MYsql 多字段排序
- php 文件写入磁盘错误,Linux磁盘读写故障的通常处理流程
- ubuntu查看node的安装目录_ubuntu安装nfs服务实现共享目录
- Linux 文件与目录管理、ls、cd、pwd、mkdir、rmdir、cp、 rm
- redis java 发布订阅_Redis之发布订阅(Java)
- 本机不装Oracle,使用plsql连接远程Oracle的方法
- 关于现代计算机的知识,从资本经济到知识经济:现代计算机的知识革命
- 谢惠民,恽自求,易法槐,钱定边编数学分析习题课讲义习题参考解答
- acer clear 工具_创作与电竞的全新体验 2019台北电脑展Acer派对开启
- 六、Oracle学习笔记:字符串函数
- 如何使用 Secret?- 每天5分钟玩转 Docker 容器技术(108)
- pdf文档有时打开乱码的解决方案
- Spring源码下载编译全过程!超详细的步骤!!!
- redis操作之迭代器 hscan
- 微信小程序 三角形实现 (评论三角形)
热门文章
- 使用VBA快速制作工资条
- 双录系统服务器地址怎么登陆,双录系统服务器地址怎么登陆
- 业务流程管理(BPM)
- 微信小程序+mysql实现增删改查
- 计算机科学与技术学费贵吗,在职计算机科学与技术研究生学费贵吗?
- oracle 与indexc函数,oracle索引知识小结
- web沙箱支付宝功能(详细)非maven版
- 浅析RocketMQ-CommitLog异步刷盘
- Python练习题答案: 海盗!是大炮准备好了!?【难度:0级】--景越Python编程实例训练营,1000道上机题等你来挑战
- html5 flash 游戏,使用Flash CC的HTML5 Canvas游戏中的HitTest