Codeforces Round #164 (Div. 2):B. Buttons



题意:给你一个有n个按钮的密码锁,n个按钮编号1~n,你必须按照正确的顺序依次按下它们,如果当前你按下的按钮是正确的,那么这个按钮就会被压下去,如果按错,那么所有已经被压下去的按钮就会全部弹出,例如n=3,正确顺序是1 3 2,如果你已经按下了1号按钮,那么当你再按2号按钮时,1号就会被弹出,你就会知道你按错了,现在你要暴力破解它,求出最坏情况下你要按多少次


设F(i)表示总共i个按钮最坏情况下需要按的次数,△F(i)表示总共i个按钮比总共i-1个按钮最坏情况下需要多按的次数

可以推出F(i) = F(i-1)+△F(i-1)+i-1,也就是F(i) = 2F(i-1)-F(i-2)+i-1


#include<stdio.h>
#include<algorithm>
using namespace std;
#define LL long long
int main(void)
{
	int n, i;
	LL ans, last;
	ans = last = 1;
	scanf("%d", &n);
	for(i=2;i<=n;i++)
	{
		last = last+i-1;
		ans += last;
	}
	printf("%lld\n", ans);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/jaihk662/article/details/80874122
今日推荐