HDUOJ 6467 简单数学题

HDUOJ 6467 简单数学题

Problem Description

已知

F ( n ) = i = 1 n ( i × j = i n C j i ) F(n) = \sum_{i=1}^n (i \times \sum_{j=i}^n C_j^i)

求 F(n) mod 1000000007

Input

多组输入,每组输入占一行,包含一个整数n(1 <= n <= 1e18)。
数据不超过300000组。

Output

对于每组输入,输出一行,包括一个数代表答案。

Sample Input

5
100

Sample Output

129
660756544

在这里用亲身经历告诫各位小伙伴们,这种大数据的题目一定要用scanf!这种大数据的题目一定要用scanf!这种大数据的题目一定要用scanf!因为这个超时,到最后也没发现问题,一直没做出来,实属可惜。诶,规律比较简单,即F(n)=(n-1)*2^n+1
AC代码如下:

#include<cstdio>
typedef long long ll;
ll kpow(int a, ll b) //快速幂模板
{
	ll ans = 1, base = a;
    while (b != 0) 
    {
		   if (b & 1 != 0)
		        ans =ans*base % 1000000007;
	            base =base*base % 1000000007;
	            b >>= 1;
	}
	    return ans % 1000000007;
}
int main()
{
	ll n;
	while (scanf("%lld", &n)!=EOF)
	{
		ll m = (n - 1) % 1000000007;
		printf("%lld\n", m * poww(2, n) % 1000000007 + 1);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_43765333/article/details/88668995
今日推荐