Description
kk进了acm集训队,队里面的大佬让每个刚进来的同学都做个自我介绍,kk为了给别人一个好印象故意在最后讲以有充足时间准备。每个自我介绍的人在看到前面的人讲得好也会在自己的自我介绍里面增加一些内容。每个人都想让自己看起来比前面的人厉害,因此每个人自我介绍的时间都是前面的人的两倍,kk想知道他有多少的时间准备。
Input
新进来所有同学的人数n以及第一个同学自我介绍的时间k;
Output
kk的准备时间t;
(数据范围:1<=n<=1e9;1<=k<=10;由于数据比较大,答案对1e9+7取模)
Sample Input 1
1 1 Sample Output 1
0 Hint
新进来的只有kk一个人,则kk没有准备时间。
#include <stdio.h>
#define c 1000000007
int main()
{
long long n,k;
scanf("%lld%lld",&n,&k);
n=n-1;
long long ans=1;
long long a=2;
a%=c;
while(n>0)
{
if(n%2==1)ans=(ans*a)%c;
n/=2;
a=a*a%c;
}
printf("%lld",(ans-1)*k%c);
return 0;
}