P4936 Agent1
题目背景
2018年11月17日,中国香港将会迎来一场XM大战
,是世界各地的ENLIGHTENED
与RESISTANCE
开战的地点,某地 的ENLIGHTENED总部
也想派Agent
去参加这次的XM大战
,与世界其他地方的ENLIGHTENED
并肩作战。
题目描述
某地的ENLIGHTENED总部
总部有
N
N
N个Agent
,每个Agent
的能力值互不相同,现在ENLIGHTENED行动指挥
想要派出
A
,
B
A,B
A,B两队Agent
去参加XM大战
。但是参加大战的两个队伍要满足两个要求:
-
A
A
A队中能力最大的
Agent
的能力值要小于 B B B队能力最弱的Agent
的能力值。 - A , B A,B A,B两队都要有人参战。
并不一定所有的Agent
都要去参加XM大战
的,心急的ENLIGHTENED行动指挥
想知道有多少种安排Agent
参加大战的方案。由于答案可能很大,所以只需要你求出答案模
(
10
9
+
7
)
(10^9+7)
(109+7)的值就可以了。
输入格式
输入仅一行,为一个整数 N N N。
输出格式
输出答案模 ( 10 9 + 7 ) (10^9+7) (109+7)的值。
输入输出样例 #1
输入 #1
3
输出 #1
5
输入输出样例 #2
输入 #2
6
输出 #2
129
说明/提示
对于 20 % 20\% 20%的数据 N ≤ 10 N \leq 10 N≤10
对于 40 % 40\% 40%的数据 N ≤ 10 3 N \leq 10^3 N≤103
对于 60 % 60\% 60%的数据 N ≤ 10 5 N \leq 10^5 N≤105
对于 100 % 100\% 100%的数据 N ≤ 10 9 N \leq 10^9 N≤109
C++实现
#include<bits/stdc++.h>
#define LL long long
#define Mod 1000000007
LL Pow(LL a,LL k){
if(k==0)
return 1;
if(k&1)
return Pow(a*a%Mod,k/2)*a%Mod;
return Pow(a*a%Mod,k/2)%Mod;
}
using namespace std;
LL n;
int main (){
scanf("%lld",&n);
printf("%lld\n",1ll*(n-2)*Pow(2,n-1)%Mod+1);
return 0;
}
后续
接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容