题目描述:
小M想要宴请n个客人,她为他们准备了n个不同口味的披萨,分别盛装在n个大盘子中。但是由于她不知道每位客人喜欢什么口味,所以她希望每位客人都能品尝到这n种不同口味的披萨。于是她将每个披萨都均分成了n片,现在她想把这些分开后的披萨重组成n个包含n种不同口味的披萨。为此她取来了一个空的小盘子,小盘子只能容纳一片披萨。小M可以进行如下操作:
1. 将某个大盘子上的一片披萨放置到另一个大盘子的空余位置,注意任意时刻每个大盘子上至多只能有n片披萨;
2. 将某个大盘子上的一片披萨放置到小盘子中,如果此时小盘子是空的话;
3. 将小盘子上的披萨放置到某个大盘子的空余位置。
请你帮忙计算小M最少要进行多少次操作,才能完成目标。
输入
第一行包含一个整数n。2<=n<=100
输出
输出对应的答案。
样例输入
3
样例输出
7
思路:这道题就是找规律,只要规律找到了,代码就很简单了,下面多写几个例子:
当n=2时:M=3;
当n=3时:M=7;
当n=4时:M=13;
当n=5时:M=21;
当n=6时:M=31;
.........
可以发现规律:M=n*(n-1)+1=n*n-n+1。所以代码如下:
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int res = n*(n-1)+1; //或者res = n*n-n+1;
cout << res << endl;
return 0;
}