1.星际密码
题目描述
星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。表的规则是:n对应的值是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。OJ连接
|1 1|^n => |Xn …|
|1 0| |… …|
例如n=2时,
|1 1|^2 => |1 1| * |1 1| => |2 1|
|1 0| |1 0| |1 0| |1 1|
即2对应的数是“0002”。
解题思路
这个题目首先需要明确矩阵是固定的,其次是矩阵相乘的方法矩阵相乘 |a1 a2| * |c1 c2| = |a1c1 + a2d1 a1c2 + a2d2| |b1 b2| |d1 d2| |b1c1 + b2d1 b1d2 + b2d2|矩阵是|1 1|^2 = |1 1|*|1 1|=|2 1| |1 0| |1 0| |1 0| |1 1| n的取值:1 2 3 4 5 6 … 左上角值:1 2 3 5 8 13 … 是一个变式的斐波那契。
初始化斐波那契数列,每次获取对应数据,打印最后4位即可
// write your code here cpp
#include <iostream>
#include <vector>
using namespace std;
vector<int> ret = {
1, 1};
void data_init()
{
for(int i = 2; i < 10001;

本文介绍了如何解决在线评测平台(OJ)上的两道编程题:星际密码和数根。星际密码的解题关键是利用斐波那契数列计算矩阵的n次方左上角的值,并输出最后4位。数根问题则需要反复将数字的各位相加,直至结果为一位数,找出这个数根。给出了详细的解题思路。

3887

被折叠的 条评论
为什么被折叠?



