roblem Description
已知
F(n)=∑i=1n(i×∑j=inCij)
求 F(n) mod 1000000007
Input
多组输入,每组输入占一行,包含一个整数n(1 <= n <= 1e18)。
数据不超过300000组。
Output
对于每组输入,输出一行,包括一个数代表答案。
Sample Input
5 100
Sample Output
129 660756544
Source
Recommend
liuyiding | We have carefully selected several similar problems for you: 6470 6469 6468 6467 6466
算术题,推公式,我真的不行,看下大佬的公式推演。。。。只能说服气。高中的等比数列运用得炉火纯青。
上图:
高中的知识了,不懂的赶紧回去复习!
然后就很简单了,但是我还是时间超限了,然后用了快速幂。。注意最后m-1也要单独取模,(a-b)%c=(a%c-b%c+c)%c
差不多就这样了。。。。
贴个代码
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
int main()
{
long long n,m;
while(~scanf("%lld",&n))
{
m=n;
long long sum=1,a=2;
while(n!=0)
{
if(n%2==1)
sum=(sum*a)%1000000007;
n=n/2;
a=(a*a)%1000000007;
}
sum=(sum*(m%1000000007-1+1000000007)%1000000007+1)%1000000007;
printf("%lld\n",sum);
}
}