题目链接:XJOI - NOI2015-13 - B

 

题目分析

通过神奇的观察+打表+猜测,有以下规律和性质:

1) 删除的 n 个数就是 1~n。

2) 当 c = 2 时,如果 n + 1 是偶数,答案是 lcm(n + 1, (n + 1) / 2 * 3) = 3(n + 1),如果 n + 1 是奇数,答案是 lcm(n + 2, (n + 2) / 2 * 3) = 3(n + 2)。

注意特判 n = 2 和 n = 4 的情况,这些情况下 (n + 1) / 2 * 3 或 (n + 2) / 2 * 3 不在 nc 的范围内。

3) 当 c > 2 时,答案是 lcm(n + 1, 2 * (n + 1)) = 2(n + 1)。

注意特判 n = 1, c = 3 的情况,这个情况下 2 * (n + 1) 不在 nc 的范围内。

 

代码

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

inline void Read(int &Num)
{
	char c = getchar();
	while (c < '0' || c > '9') c = getchar();
	Num = c - '0'; c = getchar(); 
	while (c >= '0' && c <= '9')
	{
		Num = Num * 10 + c - '0';
		c = getchar();
	}
}

int T, n, c;

int main()
{
	scanf("%d", &T);
	for (int Case = 1; Case <= T; ++Case)
	{
		Read(n); Read(c);
		if (c == 2)
		{
			if (n == 2) printf("12\n");
			else if (n == 4) printf("24\n");
			else printf("%d\n", (n + 1 + (n + 1) % 2) * 3);
		}
		else 
		{
			if (n == 1 && c == 3) printf("6\n");
			else printf("%d\n", 2 * n + 2);
 		}
	}
}

  

相关文章:

  • 2021-10-19
  • 2021-11-19
  • 2021-11-16
  • 2021-09-19
猜你喜欢
  • 2021-09-21
  • 2022-02-22
  • 2022-12-23
  • 2022-03-06
  • 2021-11-06
  • 2022-12-23
  • 2021-07-11
相关资源
相似解决方案