2300.cpp

来自「哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码」· C++ 代码 · 共 56 行

CPP
56
字号
/*  This Code is Submitted by wywcgs for Problem 2300 on 2006-08-02 at 18:17:30 */ 
#include <cstdio>
#include <algorithm>
using namespace std;
 
int scan(int);
 
int main()
{
	int n;
	
	while(scanf("%d\n", &n) != EOF && n != 0) {
		int r = scan(n);
		int s = r & 1, p = r >> 1;
		if(!s) {
			int rp = (n-p)%n;
			if(rp + 2 < p) printf("m1 r%d m1", rp);
			else if(p != 0) printf("r%d", p);
			putchar('\n');
		} else {
			int rp = (n-p)%n;
			if(p < rp) {
				printf("m1");
				if(p != 0) printf(" r%d", p);
				printf("\n");
			} else {
				if(rp != 0) printf("r%d ", rp);
				printf("m1\n");
			}
		}
	}
	
	
	return 0;
}
 
int scan(int n)
{
	int p = 0, s = 0;
	while(true) {
		char c;
		while((c = getchar()) == ' ');
		if(c == '\n') break;
		int a; scanf("%d", &a);
		switch(c) {
		case 'r': p = (p+a)%n; break;
		case 'm': 
			if(a&1) { 
				s = !s;
				p = (n-p)%n;
			}
			break;
		}
	}
	return (p<<1)|s;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?