zoukankan      html  css  js  c++  java
  • Running Rabbits

     1 #include <iostream>
     2 #include <string.h>
     3 #include <string>
     4 #include <fstream>
     5 #include <algorithm>
     6 #include <stdio.h>
     7 #include <vector>
     8 #include <queue>
     9 #include <set>
    10 #include <cmath>
    11 using namespace std;
    12 const double eps = 1e-8;
    13 const double pi=acos(-1.0);
    14 const int INF=0x7fffffff;
    15 unsigned long long uINF = ~0LL;
    16 #define MAXN 100007
    17 #define mod 1000000007
    18 typedef long long LL;
    19 int n,k;
    20 struct node
    21 {
    22     int x,y;
    23     char dir;
    24     int spd;
    25     int tru;
    26 }t,j;
    27 void move(node &p)
    28 {
    29     p.spd%=(n-1)*2;
    30     switch(p.dir)
    31     {
    32         case 'W':
    33         if(p.y-p.spd<1){p.dir='E';p.y=p.spd-(p.y-1)+1;}
    34         else p.y-=p.spd;
    35         break;
    36         case 'E':
    37         if(p.y+p.spd>n){p.dir='W';p.y=2*n-p.spd-p.y;}
    38         else p.y+=p.spd;
    39         break;
    40         case 'N':
    41         if(p.x-p.spd<1){p.dir='S';p.x=p.spd-(p.x-1)+1;}
    42         else p.x-=p.spd;
    43         break;
    44         case 'S':
    45         if(p.x+p.spd>n){p.dir='N';p.x=2*n-p.spd-p.x;}
    46         else p.x+=p.spd;
    47         break;
    48     }
    49 }
    50 void turn(node &p)
    51 {
    52     switch(p.dir)
    53     {
    54         case 'W':p.dir='S';break;
    55         case 'E':p.dir='N';break;
    56         case 'S':p.dir='E';break;
    57         case 'N':p.dir='W';break;
    58     }
    59 }
    60 int main()
    61 {
    62     //freopen("0.in","r",stdin);
    63     //freopen("01.in","w",stdout);
    64     while(scanf("%d",&n),n!=0)
    65     {
    66         getchar();scanf("%c%d%d",&t.dir,&t.spd,&t.tru);
    67         getchar();scanf("%c%d%d",&j.dir,&j.spd,&j.tru);
    68         scanf("%d",&k);
    69         t.x=t.y=1;j.x=j.y=n;
    70         for(int i=1;i<=k;i++)
    71         {
    72             move(t);move(j);
    73             if(t.x==j.x&&t.y==j.y)
    74             {
    75                 char temp=t.dir;
    76                 t.dir=j.dir;
    77                 j.dir=temp;
    78             }
    79             else
    80             {
    81                 if(i%t.tru==0)turn(t);
    82                 if(i%j.tru==0)turn(j);
    83             }
    84         //printf("%c %d %d
    ",t.dir,t.x,t.y);
    85         //printf("%c %d %d
    ",j.dir,j.x,j.y);
    86         //printf("
    ");
    87         }
    88         printf("%d %d
    ",t.x,t.y);
    89         printf("%d %d
    ",j.x,j.y);
    90     }
    91     return 0;
    92 }

    模拟 昨天一天死在麻将上~

  • 相关阅读:
    模板方法模式
    抽象工厂模式
    工厂方法模式
    简单工厂模式
    策略模式
    原型模式
    单例模式
    遍历一个二维数组的简便方法(减少foreach次数)
    数组最后一个元素的 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁
    PHP 中for循环的一个小小改进
  • 原文地址:https://www.cnblogs.com/TO-Asia/p/3234307.html
Copyright © 2011-2022 走看看