【HPU 1050 QAQ的公式求解(二)】+ 逆元

6 篇文章 0 订阅

1050: QAQ的公式求解(二)
时间限制: 1 Sec 内存限制: 128 MB
提交: 167 解决: 26
[提交][状态][讨论版]
题目描述

QAQ又给了你一个公式,即:f[i]=f[i−1]+2∗∑ij=1j
(i>=2

)。

请你告诉他f[n]


输入
第一行输入一个整数T
,代表有T组测试数据。

每组数据输入三个整数f[1]、n

,分别代表上面提到的信息。

注:1<=T<=10000,1<=f[1],n<=109


输出

对每组测试数据,输出一个整数代表最后的结果。

由于结果很大,请对109+7

取余。
样例输入

3
1 6
3 6
10 10

样例输出

111
113
448

仔细推可以推出公式,逆元计算~~~

AC代码 :

#include<cstdio>
typedef long long LL;
const LL mod = 1e9 + 7;
LL KSM(LL a,LL b){
    LL cut = 1, n = a;
    while(b){
        if(b & 1)
            cut = cut * n % mod;
        b /= 2;
        n = n * n % mod;
    }
    return cut;
}
int main()
{
    int T;
    LL a,n;
    scanf("%d",&T);
    while(T--){
        scanf("%lld %lld",&a,&n);
        LL ans = ((KSM(n,3) * 2 % mod + KSM(n,2) * 3 % mod + n) % mod * KSM(6,mod - 2) % mod + (n * n % mod + n) % mod * KSM(2,mod - 2) % mod - 2)% mod;
        ans = (ans + a) % mod;
        printf("%lld\n",ans);
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值