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;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值