zoukankan      html  css  js  c++  java
  • O

    O - Ciel and Robot
    Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u
    Submit Status
    Appoint description: 

    Description

    Fox Ciel has a robot on a 2D plane. Initially it is located in (0, 0). Fox Ciel code a command to it. The command was represented by strings. Each character of s is one move operation. There are four move operations at all:

    • 'U': go up, (x, y)  →  (x, y+1);
    • 'D': go down, (x, y)  →  (x, y-1);
    • 'L': go left, (x, y)  →  (x-1, y);
    • 'R': go right, (x, y)  →  (x+1, y).

    The robot will do the operations in s from left to right, and repeat it infinite times. Help Fox Ciel to determine if after some steps the robot will located in (a, b).

    Input

    The first line contains two integers a and b, ( - 109 ≤ a, b ≤ 109). The second line contains a string s (1 ≤ |s| ≤ 100s only contains characters 'U', 'D', 'L', 'R') — the command.

    Output

    Print "Yes" if the robot will be located at (a, b), and "No" otherwise.

    Sample Input

    Input
    2 2
    RU
    Output
    Yes
    Input
    1 2
    RU
    Output
    No
    Input
    -1 1000000000
    LRRLU
    Output
    Yes
    Input
    0 0
    D
    Output
    Yes
    const int maxn = 300;
    char op[maxn];
    struct Point
    {
        int x;
        int y;
    };
    vector<Point> p;
    int main() 
    {
        //freopen("in.txt","r",stdin);
        int x,y;
        while(cin>>x>>y)
        {
            p.clear();
            scanf("%s",op);
            int len = strlen(op);
            int X = 0;
            int Y = 0;
            p.push_back((Point){0,0});
            rep(i,0,len)
            {
                if(op[i] == 'L') X--;
                if(op[i] == 'R') X++;
                if(op[i] == 'U') Y++;
                if(op[i] == 'D') Y--;
                p.push_back((Point){X,Y});
            }
            int flag = 0;
            rep(i,0,p.size())
            {
                if(X == 0 && Y)
                {
                    if(x == p[i].x &&  (y - p[i].y)%Y == 0 && (y - p[i].y)/Y >= 0)
                    {
                        flag = 1;
                        break;
                    }
                    continue;
                }
                if(Y == 0 && X)
                {
                    if(y == p[i].y && (x - p[i].x)%X == 0 && (x - p[i].x)/X >= 0)
                    {
                         flag = 1;
                         break;
                    }
                    continue;
                }
                if(X == 0 && Y == 0)
                {
                   if( x == p[i].x && y == p[i].y)
                   {
                       flag = 1;
                       break;
                   }
                   continue;
                }
                if((x - p[i].x)%X == 0 &&  (y - p[i].y)%Y == 0 && ((x - p[i].x)/X == (y - p[i].y)/Y) && (x - p[i].x)/X >= 0)
                {
                    flag = 1;
                    break;
                }
            }
            if(flag)
                cout<<"Yes"<<endl;
            else
                cout<<"No"<<endl;
        }
        return 0;
    }
  • 相关阅读:
    (转载)C#如何在任务管理器中不显示指定的窗体
    Windows上配置Mask R-CNN及运行示例demo.ipynb
    如何选择普通索引和唯一索引?
    relay(跳板机)搭建
    javascript 9x9乘法口诀表
    canvas画布爆炸
    Chrome Network Timing 解释
    JavaScript中对数组的定义
    jquery each 和 map 区别
    css 兼容性转换网站
  • 原文地址:https://www.cnblogs.com/DreamHighWithMe/p/3430049.html
Copyright © 2011-2022 走看看