HDU-2276(矩阵快速幂)

hdu2276(构建矩阵) Kiki & Little Kiki 2 Time Limit: 2000/1000 MS(Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s):2517    Accepted Submission(s): 1312 ProblemDescription There are 阅读详情

                                     Kiki & Little Kiki 2

        Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
        Total Submission(s): 3372    Accepted Submission(s): 1815

Problem Description

There are n lights in a circle numbered from 1 to n. The left of light 1 is light n, and the left of light k (1< k<= n) is the light k-1.At time of 0, some of them turn on, and others turn off. 
Change the state of light i (if it's on, turn off it; if it is not on, turn on it) at t+1 second (t >= 0), if the left of light i is on !!! Given the initiation state, please find all lights’ state after M second. (2<= n <= 100, 1<= M<= 10^8)

Input

The input contains one or more data sets. The first line of each data set is an integer m indicate the time, the second line will be a string T, only contains '0' and '1' , and its length n will not exceed 100. It means all lights in the circle from 1 to n.
If the ith character of T is '1', it means the light i is on, otherwise the light is off.

Output

For each data set, output all lights' state at m seconds in one line. It only contains character '0' and '1.

Sample Input

1

0101111

10

100000001

Sample Output

1111000

001000010

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

struct node
{
    int mt[102][102];
}a,b;
int  n;
char str[102];

node mult(node x,node y)
{
    node z;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
        {
            z.mt[i][j]=0;
            for(int k=0;k<n;k++)
                z.mt[i][j]+=x.mt[i][k]*y.mt[k][j];
            z.mt[i][j]%=2;
        }
    return z;
}

node qpow(int t)
{
    node z;
    memset(b.mt,0,sizeof(b.mt));
    memset(z.mt,0,sizeof(z.mt));
    for(int i=0;i<n;i++)
        b.mt[i][0]=(int)str[i]-'0';
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(i==j||i==j+1||(i==0&&j==n-1))
                a.mt[i][j]=1;
            else
                a.mt[i][j]=0;
        }
        z.mt[i][i]=1;
    }
    while(t)
    {
        if(t&1)
            z=mult(z,a);
        a=mult(a,a);
        t=t>>1;
    }
    z=mult(z,b);
    return z;
}

int main()
{
    int v;
    while(~scanf("%d%s",&v,str))
    {
        n=strlen(str);
        node z=qpow(v);
        for(int i=0;i<n;i++)
            printf("%d",z.mt[i][0]);
        printf("\n");
    }
}

 

相关推荐

Vivado FIR Complier_IP核使用方法

文章依靠该IP核对应手册PG149写的,因为笔者需求简单,没有深入挖掘功能,可以自行下载学习。

2302_80180551的博客 3986

hdu 2276(矩阵快速幂)

题意:n个灯排成环,1的左边是n,其他i号灯的左边是i-1号,给定灯的初始状态,每秒每个左边的灯为1 的灯改变状态。 影响第i个灯的状态就是他左边的灯和他本身,所以递推式如下 (图源百度) #include&lt;iostream&gt; #include&lt;string&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #inclu...

qq_39898877的博客 291

离线安装vue脚手架,内网安装@vue/cli

公司开发环境使用内网,无法用外网,搭建环境的时候,发现内网系统没有安装vue脚手架,我搜了很多文章,发现他们的方法对我都不适用,然后就自己摸索,最终皇天不负有心人,终于被我安装上了,一下是我内网离线安装vue/cli的方法,希望能帮助到有需要的小伙伴! 因为npm被集成在nodejs中,而安装nodejs只需要把nodejs安装包copy到内网电脑安装就行,比较简单,这里就不多做演示。 在外网电脑上,使用npm install -g xxxx命令下载好我们所需要的各个安装包,比如: npm insta

Liberty_yes的博客 1万+

hdu 2276 Kiki & Little Kiki 2(矩阵快速幂)

Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1494    Accepted Submission(s): 755 Problem Description There

街角的花街糖 599

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3597

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

hdu2276(矩阵的快速幂)

Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1711    Accepted Submission(s): 874 Problem Description There are

晓风残月xj 913

STM32F4串口接收ATGM336H GPS数据,手把手教你解析NMEA协议并转换经纬度格式

本文详细介绍了如何使用STM32F4开发板通过串口接收ATGM336H GPS模块的NMEA协议数据,并解析GNRMC语句获取经纬度信息。内容涵盖硬件连接、NMEA协议深度解析、数据校验实现以及经纬度格式转换的数学原理与代码实现,为嵌入式开发者提供完整的GPS数据处理解决方案。

weixin_42522575的博客 497

hdu-2276(Kiki & Little Kiki 2)

矩阵快速幂的练习题,需要将题目转化一下才能用矩阵快速幂。 题目大意:有n个灯,分别编号 1 到 n,它们构成一个环,1 的左边是 n,k 的左边是 k-1。时间每过 1 s,如果灯 i 左边的灯是亮的,则灯 i 切换状态(1 表示亮,0 表示暗)。附链接:http://acm.hdu.edu.cn/showproblem.php?pid=2276。 大体思路:这里的难点在于如何想到用快速幂,因

blackturtle的博客 426

SAP_ABAP_SD_BAPI清单案例教程——销售订单开票_BAPI_BILLINGDOC_CREATEMULTIPLE_VF01_S4版本

SAP BAPI(Business Application Programming Interface)是SAP系统中的一组规范和标准,用于从SAP系统中获取数据、输入数据和更新数据。这些API允许开发者以编程方式与SAP系统交互,而无需编写大量的自定义代码。2.1 Copy代码 直接可使用。2.2 VF01开票。

java_zhong1990的专栏 2214

模型预测控制 (MPC, Model Predictive Control) 算法详解及案例分析

模型预测控制是一种基于模型的控制策略,通过在线求解一个有限时域的优化问题,预测系统的未来行为,并根据预测结果调整控制输入,以实现系统的稳定性和性能优化。

闲人编程的博客 2935

hdu 2276 Kiki & Little Kiki 2 矩阵快速幂

http://acm.hdu.edu.cn/showproblem.php?pid=2276 题意: 给了n个灯泡的状态,他们绕成一个环,0是灭,1是亮,每一秒灯泡的状态都会改变,规则是如果当前这个灯泡的左边的灯泡当前是状态1,那么下一秒当前的这个灯泡状态就改变0变1,1变0,最后问你m秒后的状态。 m很大可以想到矩阵快速幂,关键是怎么用系数矩阵表示状态的转移 每个灯泡的左边如

缺氧 301

电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口

以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来;

qq_60226558的博客 887

HDU 2276 - Kiki & Little Kiki 2 (矩阵快速幂)

链接: Kiki & Little Kiki 2 题意: 给你 n 栈灯围成一圈,灯泡有两种状态开或者关 ,每秒灯泡的状态都会发生变化,变化的规则为 : 如果这栈灯的前一栈灯(第一栈灯的前一栈是第 n 栈灯)是亮着的那么这栈灯的状态机会改变(开变为关,关变为开)。现给出灯的初始状态,求 k (1<= k <= 1e8)秒后所有灯的状态。 思路: 我们观察到,每栈灯的状态只由两个位置的的状态得到,其实就是这个位置和上一个位置的状态异或一下。然后不难发现每一次状态改变,只要把递推矩阵的相应

hddddh的博客 439

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql 矩阵运算_HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂)

HDU 2276 Kiki Little Kiki 2 (位运算矩阵快速幂) ACM 题目地址:HDU 2276 Kiki Little Kiki 2 题意 : 一排灯,开关状态已知,每过一秒:第i个灯会根据刚才左边的那个灯的开关情况变化,如果左边是开的,它就会变化,如果是关的,就保持原来状态。问m秒后HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂)ACM...

weixin_42356475的博客 149

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU - 2276 Kiki & Little Kiki 2 (矩阵快速幂)

Problem Description There are n lights in a circle numbered from 1 to n. The left of light 1 is light n, and the left of light k (1< k<= n) is the light k-1.At time of 0, some of them turn on, ...

weixin_30297281的博客 83

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HDU2276 Kiki & Little Kiki 2 矩阵快速幂

HDU2276 题目是一个常见的一路路灯开开关关的问题,要求1代表开灯,0代表关灯,整个路灯围成一个圆,并且当该路灯的左边的路灯是开着的,即1时,状态翻转,其余情况状态不变。 分析状态变化: 得到转台转移矩阵后,矩阵快速幂套路即可 AC代码:/************************************************************** * By: Xingxi

风城 487

HDU 2276 Kiki & Little Kiki 2(矩阵快速幂)

题目地址:HDU 2276 这题的矩阵构造方式不太好想。看的题解才会的。原来是用fn=(fn-1+fn)%2的方法。 于是就构造出了一个矩阵: 1,0,0,1 1,1,0,0 0,1,1,0 0,0,1,1 然后矩阵快速幂来求。 但是取余运算是很费时间的,每次都%2会超时,于是这时就可以转化为位运算。 代码如下: #include #include #include #i

scf0920 1054

hdu2276-nyoj300矩阵快速幂

又写次矩阵模乘,表示看了解题报告后,才知道是矩阵题。练得题少的缘故。应该看懂题就能分析出是什么题。勤加练习,加油!吖飒~~~~ hdu2276,数据比较水,很快就AC了,nyoj一直TLE,后来用结构体写AC啦。大概是初始化和函数的调用浪费的时间。 题意: 一个环形排列的灯,灯的左侧灯状态为1,改变该灯的状态。否则不改变。n轮过后,所有灯的状态。 递推矩阵为: 1 1 0 0 0 0...

java开发指南博客 【转载】 109

HDU 2276 矩阵快速幂

Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2650Accepted Submission(s): 1393 Problem Description There ...

all00747的博客 168

hdu 2276(矩阵快速幂)

Kiki & Little Kiki 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2301    Accepted Submission(s): 1176 Problem Description There

The Dream Of leozp 719

HDU2276(矩阵快速幂)

题目链接:点击打开链接 这道题如果不跟我说是矩阵快速幂的话  我很可能就想不到。还是由别人的提醒  我才做了出来。 题意是给你一串数只有0和1。再给你一个m,问你改变m次后,这串数变成什么样子了。变化规则是:看当前数的左边是什么,如果当前数的左边是1,那当前数改变(1变成0,或者0变成1)。如果是0,则不变。这个其实可以这么理解,当前数用bn代表当前数,an代表要bn变化前的数,那么bn=(a

zezzezzez的博客 588

hdu 2276矩阵快速幂

根据题意构造变换矩阵即可。有很多构造矩阵的方法。例如,假设原串长度为7,则我构造的矩阵M如下: 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 每次用M右乘原始矩阵就相当于一次变换,用快速幂就可以过了。不过这道题测试数据有点坑爹,我直接...

weixin_30338743的博客 105

ACM-数论-矩阵快速幂 HDU5015&HDU2276

HDU2276题目链接 HDU5015题目链接 2276 矩阵:(只有左边和本身有关联(1),其他都无关(0)) 第一个样例1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1代码:#include<iostream> #include<string.

CS_W98的博客 301
上一篇: 二叉树的遍历(Java)
下一篇: HRBUST-1814(背包问题)
进阶的萌新
博客等级 码龄9年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值