密码锁 | ||||||
|
||||||
Description | ||||||
小D在尝试打开一个很有挑战性的密码锁,这个锁上面一共有 n 个按钮用来打开。 小D必须输入之前设置好的密码序列才能打开这个锁。每次按下一个按钮,这个按钮要么陷入(这个表示小D猜对了密码当前这位的数并准备按密码序列的下一个按钮)要么所有的按钮恢复原状(表示当前位按了错误的按钮)。当所有的按钮全部按下的时候,密码锁就会打开。 小D想知道她现在想要打开这个n位的锁最坏情况下要按多少次按钮。
|
||||||
Input | ||||||
有多组测试数据。 每组有一个数n(1 ≤ n ≤ 2000)。 |
||||||
Output | ||||||
输出最坏按按钮的次数。 | ||||||
Sample Input | ||||||
3 6 484 |
||||||
Sample Output | ||||||
7 41 18897054 |
||||||
Author | ||||||
曾卓敏 @hrbust |
找规律的题,
寻找第一按钮 按n次
寻找第二按钮 按(n-2)*2 +1
寻找第三按钮 按 (n-3)*3+1
。。。
寻找第k按钮 按(n-k)*k+1
其中 1<k<n;
寻找最后一个按钮只按了1次
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespace std; int main() { int n; while(~scanf("%d",&n)) { long sum=n+1+n-2; int i; for(i=2;i<=n-1;i++) { sum+=(n-i)*i; } printf("%ld\n",sum); } return 0; }