B. Sereja and Mirroring

B. Sereja and Mirroring

B. Sereja and Mirroring
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

Let’s assume that we are given a matrix b of size x × y, let’s determine the operation of mirroring matrix b. The mirroring of matrix b is a2x × y matrix c which has the following properties:

  • the upper half of matrix c (rows with numbers from 1 to x) exactly matches b;
  • the lower half of matrix c (rows with numbers from x + 1 to 2x) is symmetric to the upper one; the symmetry line is the line that separates two halves (the line that goes in the middle, between rows x and x + 1).

Sereja has an n × m matrix a. He wants to find such matrix b, that it can be transformed into matrix a, if we’ll perform on it several(possibly zero) mirrorings. What minimum number of rows can such matrix contain?

Input

The first line contains two integers, n and m (1 ≤ n, m ≤ 100). Each of the next n lines contains m integers — the elements of matrix a. The i-th line contains integers ai1, ai2, …, aim (0 ≤ aij ≤ 1) — the i-th row of the matrix a.

Output

In the single line, print the answer to the problem — the minimum number of rows of matrix b.

Sample test(s)
input
4 3
0 0 1
1 1 0
1 1 0
0 0 1

output
2

input
3 3
0 0 0
0 0 0
0 0 0

output
3

input
8 1
0
1
1
0
0
1
1
0

output
2

Note

In the first test sample the answer is a 2 × 3 matrix b:

001
110

If we perform a mirroring operation with this matrix, we get the matrix a that is given in the input:

001
110
110
001


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int num[111][111];

int main ()
{
    int n,m;
    scanf ("%d%d",&n,&m);

    int i,k;

    for (i = 0;i < n;i++)
        for (k = 0;k < m;k++)
            scanf ("%d",&num[i][k]);

    int ans = n;a

    if (n % 2)
        printf ("%d\n",n);
    else
    {
        int tn = n;
        while (1)
        {
            int tf = 1;
            for (i = 0;i < tn / 2;i++)
                for (k = 0;k < m;k++)
                    if (num[i][k] != num[tn - 1 - i][k])
                        tf = 0;
            if (tf)
            {
                if (tn % 2)
                    break;
                tn /= 2;
            }else
            {
                //tn *= 2;
                break;
            }
        }
        printf ("%d\n",tn);
    }

    return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109132.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Hackbar PJ

    Hackbar PJ前言:今天准备用hackbar时,竟然收费了,于是上网搜索如何破解,这里教给大家方法:不管Mac还是Windows,方法都一样,就是要找到hackbar的安装路径,修改其内部hackbar-panel.js的配置文件步骤:这里我以Windows为例访问路径:C:\Users\你的用户名\AppData\Local\Google\Chrome\UserData\…

    2022年4月30日
    79
  • 关于 hostapd[通俗易懂]

    关于 hostapd[通俗易懂]关于hostapd主页:http://w1.fi/hostapd/hostapd是一个IEEE802.11的AP和IEEE802.1X/WPA/WPA2/EAP/RADIUS验证器.此页面用于怎么在linux系统下使用它.其他操作系统请参考hostapd主页就Linux而言,老版本只能使用以下3个包HostAPmadwifipri

    2022年5月11日
    93
  • 笔记视频_微信里笔记怎么编辑

    笔记视频_微信里笔记怎么编辑日常开发小笔记(this小操作)

    2022年4月21日
    49
  • springaop的使用_Spring注解

    springaop的使用_Spring注解目录SpringAOP简介AOP概念SpringAOP简单流程图SpringAOP之Annotation前置通知(Beforeadvice)返回后通知(Afterreurningadvice)抛出异常后通知(Afterthrowingadvice)后置通知(After(finally)advice)环绕通知(Aroundadvice)引入…

    2022年8月11日
    9
  • vue人脸识别_vue不是内部或外部命令

    vue人脸识别_vue不是内部或外部命令1.vue报错:无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    2022年8月18日
    8
  • ubuntu安装后如何配置_ubuntu device for boot loader

    ubuntu安装后如何配置_ubuntu device for boot loader一、安装软件包#aptinstallcoturn二、配置coturn1、复制DTLS、TLS支持的证书文件:#cp/usr/share/coturn/examples/etc/turn_server_cert.pem/etc/turn_server_cert.pem#cp/usr/share/coturn/examples/etc/turn_server_pkey.pem/etc/t…

    2025年6月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号