• XidianOJ 1041: Franky的游戏O


    题目描述

    Franky是super的人造人,来到了n*m的棋盘世界玩冒险游戏。

    n×m的棋盘由n行每行m个方格组成,左上角的方格坐标是(0,0),右下角的方格坐标是(n-1,m-1)。

    每次游戏时,他可以降落在棋盘的任意点,并以此为起点开始周游棋盘世界,他的移动规则是:

    只能朝向左上(-1,-1),右上(-1,1),左下(1,-1),右下移动(1,1)四个向量移动。

    不过这个棋盘世界很特殊:

    它的边界是联通的,例如,在7×9的棋盘中 能从(0,0)移动到(6 ,8),

    从(1,0)移动到(0,8)和(2,8) ...等等。

    更精确地说当他从(x,y)以向量(Vx,Vy)移动后,他的坐标是( (x+Vx)%n , (y+Vy)%m );

    现在Franky想知道,他最少要玩几次游戏才能遍历完整个棋盘世界。

    PS:猜一猜,有公式喔!

    PS2:只和奇偶性有关喔,推推小数据看。

    输入

    有多组输入数据。

    输入数据的第一行为一个数字T,代表有T组输入数据 (0<T≤1000)。

    接下来为T组测试数据。每组数据占一行,为2个整数n,m(1≤n,m≤10000)。

    输出

    对于每一组数据,在1行上输出一个整数, 表示Franky最少要玩的游戏次数。

    --正文

    试试几组数据就知道了

    双偶数的话就是2,否则就是1

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    using namespace std;
    
    int main(){
        int time,T,n,m;
        scanf("%d",&T);
        for (time=1;time<=T;time++){
            int tmp = 0;
            scanf("%d %d",&n,&m);
            if (n % 2 == 0){
                tmp ++;
            }
            if (m % 2 == 0){
                tmp ++;
            }
            if (tmp == 2){
                printf("2
    ");
            }
            else
                printf("1
    "); 
        }
        return 0;
    }
  • 相关阅读:
    微信小程序scroll-view不动的处理
    AndoridSQLite数据库开发基础教程(4)
    Andorid SQLite数据库开发基础教程(3)
    Andorid SQLite数据库开发基础教程(2)
    Visual Studio 2019更新到16.2.3
    密码的复杂化#个人隐私保护系列#
    Nessus更新到8.6.0
    Visual Studio 2019更新到16.2.2
    Maltego更新到4.2.6
    Visual Studio 2019更新到16.2.1
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6184501.html
Copyright © 2020-2023  润新知