zoukankan      html  css  js  c++  java
  • Ciel and Robot

    C. Ciel and Robot
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    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 string s. 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.

    细节蛮多的,做的我好忧伤。。。

     1 #include <iostream>
     2 #include <string>
     3 #include <map>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <cstring>
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     char s[101];
    12     int a, b, dx, dy, i;
    13     while(scanf("%d %d", &a, &b) != EOF)
    14     {
    15         scanf("%s", s);
    16         dx = dy = 0;
    17         for(i = 0; s[i] != ''; i++)
    18         {
    19             if(dx == a && dy == b) break;
    20             if(s[i] == 'U') dy++;
    21             else if(s[i] == 'D') dy--;
    22             else if(s[i] == 'L') dx--;
    23             else dx++;
    24         }
    25         if(s[i] == '')
    26         {
    27             int dx2 = abs(dx), dy2 = abs(dy);
    28             for(i = 0; s[i] != ''; i++)
    29             {
    30                 if(s[i] == 'U') b--;
    31                 else if(s[i] == 'D') b++;
    32                 else if(s[i] == 'L') a++;
    33                 else a--;
    34                 if(!a && !b) break;
    35                 int a2 = abs(a), b2 = abs(b);
    36                 if((long long)a * dy == (long long)b * dx && (long long)b * dy >= 0 && (long long)a * dx >= 0)
    37                 {
    38                     if(dy && dx)
    39                     {
    40                         if(a2 % dx2 == 0 && b2 % dy2 == 0)  break;
    41                     }
    42                     else if(!dx && dy)
    43                     {
    44                         if(!a && b2 % dy2 == 0)  break;
    45                     }
    46                     else if(dx && !dy)
    47                     {
    48                         if(!b && a2 % dx2 == 0) break;
    49                     }
    50                 }
    51             }
    52         }
    53         if(s[i] != '') puts("Yes");
    54         else puts("No");
    55     }
    56     return 0;
    57 }
    View Code

  • 相关阅读:
    《独立网店经营十招招招制胜》
    行业礼品解决方案集
    北京第一礼品网
    ecshop网店系统+Ucenter用户中心+Cyask问答系统整合
    北京礼品在线入驻CRD核心商业区万达广场
    SEO中的关键字扩展
    礼问天下上线
    好网推荐
    北京礼品在线夏日礼の尚礼品促销第二波
    广告管理中的热点问题
  • 原文地址:https://www.cnblogs.com/cszlg/p/3242265.html
Copyright © 2011-2022 走看看