乱水2

C. 座位编号

1000ms
1000ms
65536KB
64-bit integer IO format:  %lld      Java class name:  Main
Font Size:   

第十届北京师范大学程序竞赛开始了,大牛51isoft准备采用两种传统的方法给比赛机房的各台机器编号,一种可以成为横”S”方式,另种可称为竖“S”方式(如下图所示)

规定两种编号方法均从右侧开始将机器编为第一列,从最上方将机器编为第一行。ch0588同学作为刚入学的大一新生自然也要参加这场比赛,因此赛前他想向大牛51isoft询问他具体的比赛位置,大牛则会选择以下两种方式告诉ch0588他具体的比赛位置,一是告诉ch0588比赛时的机器位于第几行第几列,二是告诉他机器的编号。

Input

 输入包括多组数据,每组数据包含两行,第一行三个整数m,n,c,代表机房有m行n列机器(0<m,n<100),c代表机器将采用何种方式编号,1表示采用横“S”行,2表示竖“S”型,第二行先输入一个整数1或2代表51isoft将选择哪种方式告诉ch0588,若输入为1则再输入两个整数i,j表示ch0588将在第i行第j列的机器上比赛;若输入2,则再输入一个整数k,表示ch0588将在编号为k的机器上比赛;若输入0表示该组数据输入结束。当n=m=c=0时表示所有数据输入结束

Output

 对于大牛的每次选择,若51isoft选择第一种方式告诉ch0588,则输出该位置上机器的编号;若大牛选择第二种方式告诉ch0588(囧~~),则输出编号为k的机器位于机房的第几行第几列(输出的行和列用空格分开),如此ch0588就能很快的找到自己比赛的机器了!

Sample Input

5 5 1
1 1 1
2 7
0
0 0 0

Sample Output

1
2 4
Submit 
#include <cstdio>
#include<cmath>
#include<cctype>
#include<cstring>
#define MAX 101
int m,n,c,i,j;
int main()
{
    //freopen("input.txt","r",stdin);
   while(scanf("%d%d%d",&m,&n,&c))
   {
       if(!m&&!n&&!c)return 0;
      int choice;
      while(~scanf("%d",&choice)&&choice){
      if(choice==1)
      {
          scanf("%d%d",&i,&j);
          if(c==1)
          {
              int k;
              if(i%2){k=(i-1)*n+j;}
              else
              {
                  k=(i-1)*n+(n-j+1);
              }
              printf("%d\n",k);
          }
          if(c==2)
          {
              int k;
              if(j%2)
              {
                  k=m*(j-1)+i;
              }
              else
              {
                  k=m*(j-1)+(m-i+1);
              }
              printf("%d\n",k);
          }
      }
      if(choice==2)
      {
          int k;
          scanf("%d",&k);
          if(c==1)
          {
              if(k%n==0)i=k/n;
              else i=k/n+1;
              int q=k%n;
              if(i%2){j=q;if(q==0)j=n;}
              else {j=n-q+1;if(q==0)j=1;}
              printf("%d %d\n",i,j);
          }
          if(c==2)
          {
              if(k%m==0)j=k/m;
                else j=k/m+1;
                int q=k%m;
                if(j%2){i=q;if(q==0)i=m;}
                else {i=m-q+1;if(q==0)i=1;}
                printf("%d %d\n",i,j);
          }
      }
}
   }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值