首页 > 其他分享 >hdu:求和(逆元)

hdu:求和(逆元)

时间:2023-05-14 22:57:58浏览次数:40  
标签:10 hdu 求和 ll int 逆元 ans 细菌 inv

Problem Description
Apex实验室里培养了很多种类的细菌。细菌的繁殖遵循如下规则:第k种细菌在第t个单位时间内新增的数量为k^t。
例如,k=2,t=4时,第种细菌的总数为2+4+8+16。
现在,实验室里一共有n种细菌,分别为1,2,3,…,n。在第1单位时间结束后,第k种细菌的个数为k个。
求第m个单位时间结束后,所有细菌的总数。由于答案可能很大,只要输出mod (10^9+7)的值。

Input
输入包含多组测试用例。
每组数据包含两个正整数n和m,n表示细菌种类数量,m表示时间。

其中:
1 <= n,m <= 100000

Output
每组数据输出一行,表示细菌的总数mod (10^9+7)的值。

输入样例
3 3
输出样例
56

数学-线性求逆元

注意ll的使用防止乘数爆范围

点击查看代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int p=1e9+7;
const int N=1e5+10;
ll inv[N];
ll quick_pow(ll a,int b)
{
    ll ans=1;
    for(;b;b>>=1)
    {
        if(b&1)
        ans*=a,ans%=p;
        a*=a,a%=p;
    }
    return ans;
}
ll solve(int k,int m)
{
    ll ans=(ll)k*(quick_pow(k,m)-1)%p*inv[k-1]%p;
    return ans;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m;
    inv[1]=1;
    for(int i=2;i<=1e5;++i)
    inv[i]=(ll)(p-p/i)*inv[p%i]%p;
    while(cin>>n>>m)
    {
        ll res=0;
        res+=m;
        for(int i=2;i<=n;++i)
        {
            res+=solve(i,m);
            res%=p;
        }
        cout<<res<<'\n';
    }
}

标签:10,hdu,求和,ll,int,逆元,ans,细菌,inv
From: https://www.cnblogs.com/ruoye123456/p/17400487.html

相关文章

  • hdu:XOR(线性基)
    XOR数学-线性基设原集为S,线性基为P,若|S|>|P|,则异或会出现0。若|P|==n,则会产生2^n个不同数(包括0)而线性基不包含0元素,故若|S|中元素可以异或出0,k需要自减点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e4+10;lla[N......
  • axios 发送 form-data 请求和 x-www-form-urlencoded请求以及相关问题
    问题notsupported{"msg":"Contenttype'multipart/form-data;boundary=--------------------------714795402464721152224475;charset=UTF-8'notsupported","code":500}这个是因为form-data请求没有被后端支持,联系后端确认请求格式;关......
  • 扩展欧几里得算法与乘法逆元
    扩展欧几里得算法基本知识整除的基本定义与性质定义\(设a,b∈Z且a≠0,若b除以a余数为0,则称a整除b,记为a∣b。若a不能整除b,则称a\nmidb。\)性质1\(a∣b⟺−a∣b⟺a∣−b⟺|a|∣|b|。\)性质2\(a∣b且b∣c⇒a∣c。\)性质3\(c∣a且c∣b⇒c∣na+mb......
  • Elasticsearch 聚合查询,分时间段求和
    {"query":{"term":{"time_d":"20230508"}},"aggs":{"articles_over_time":{"date_histogram":{"......
  • 累加求和 1~ n求和
    a=1~n的求和\[\sum_{a=1}^na\]公式:(首项+末项)*项数/2如果a=1、n=10=>(1+10)10/2=55Python代码a=1n=101#常规方法sum=0foriinrange(a,n):sum+=iprint(sum)#递归方法defsum(num):ifnum==1:return1ret......
  • (hdu step 3.1.7)Children’s Queue(求n个人站在一起有m个人必须是连在一起的方案数)
    题目:Children’sQueueTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):853AcceptedSubmission(s):479 ProblemDescriptionTherearemanystudentsinPHTSchool.Oneday,theheadmasterwhosen......
  • (hdu step 3.2.1)Max Sum(简单dp:求最大子序列和、起点、终点)
    题目:MaxSumTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):1390AcceptedSubmission(s):542 ProblemDescriptionGivenasequencea[1],a[2],a[3]......a[n],yourjobistocalculatethemaxsu......
  • (hdu step 3.1.3)母牛的故事(简单递推)
    题目:母牛的故事TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):659AcceptedSubmission(s):481 ProblemDescription有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小......
  • (hdu step 3.2.3)Super Jumping! Jumping! Jumping!(DP:求最长上升子序列的最大和)
    题目:SuperJumping!Jumping!Jumping!TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):896AcceptedSubmission(s):518 ProblemDescriptionNowadays,akindofchessgamecalled“SuperJumping!......
  • (hdu step 2.3.8)小兔的棋盘(卡特兰数:从左上角走到右上角的路径数)
    题目:     小兔的棋盘TimeLimit:1000/1000MS(Java/Others)MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):802AcceptedSubmission(s):502ProblemDescription小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是......