Codeforces 622F 「数学数论」「数学规律」

题意:

给定n和k,求

1 ≤ n ≤ 109, 0 ≤ k ≤ 106

思路:

题目中给的提示是对于给定的k我们可以求出一个最高次为k+1的关于n的通项公式。

根据拉格郎日插值法,我们可以通过k+2个离散的点来确定这个通项。所以求出前k+2项,然后就可以确定公式。

拉格郎日差值法传送门:http://www.guokr.com/post/456777/

最后得出的公式是酱紫的:(公式来自卿学姐博客)

然后问题来了,有除法如何搞定模运算...这个就用到逆元的运算了,逆元的定义就是大家都学过的离散数学里边的那个定义,求解方法有两种,一种是根据扩展欧几里得,构造ax+by=1(mod某数),如果取模的某数是一个素数的话可以根据费马小定理a^(p-1)=1(mod某数),结合快速幂求解。

注意有j!=i的条件...所以要求的逆元数是两个,好好理解下这个式子可以用阶乘优化复杂度。

传送门:http://www.cnblogs.com/james47/p/3871782.html

坑点:

注意逆元的运算应该放到等式的前边。然后注意阶乘的正负。

代码:(基本是跟卿学姐一个模子刻出来的==

#include<bits/stdc++.h>
using namespace std;
long long mod=(1e9)+7;
long long p[1000050];
long long fac[1000050];
long long quick_pow(long long a,long long b,long long m){
    long long tmp=1;
    while(b){
        if(b&1){
            tmp*=a;
            tmp%=m;
        }
        a*=a;
        a%=m;
        b>>=1;
    }
    return tmp;
}
int main()
{
    long long n,k;
    cin>>n>>k;
    for(int i=1;i<=k+2;i++){
        p[i]=(p[i-1]+quick_pow(i,k,mod))%mod;
    }
    fac[0]=1;
    for(int i=1;i<=1000010;i++){
        fac[i]=fac[i-1]*i;
        fac[i]%=mod;
    }
    if(n<=k+2){
        cout << p[n] << endl;
        return 0;
    }
    long long chang=1;
    for(int i=1;i<=k+2;i++){
        chang*=n-i;
        chang%=mod;
    }
    long long ans=0;
    for(int i=1;i<=k+2;i++){
        long long a=quick_pow(n-i,mod-2,mod);
        long long b=quick_pow((fac[i-1]*fac[k+2-i])%mod,mod-2,mod);
        if((k+2-i)%2)b=-b;
        ans =(ans + p[i]*chang%mod*b%mod*a)%mod;//这句一定要注意逆元运算先
    }
    cout << ans << endl;
}
时间: 2024-10-13 12:07:16

Codeforces 622F 「数学数论」「数学规律」的相关文章

codeforces 446C DZY Loves Fibonacci Numbers(数学 or 数论+线段树)

In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation F1 = 1; F2 = 1; Fn = Fn - 1 + Fn - 2 (n > 2). DZY loves Fibonacci numbers very much. Today DZY gives you an array consisting of n integers: a1, a2, ...,

&#183;读书笔记」 具体数学

头脑一热,然后买了<具体数学>,差点还买了英文版后来觉得自己英文太烂,还是决定购买的中文版书是前几天到的,从2014.8.1号开始看,坚持每天看一点,学习一点.为了监督自己,决定在这里开一贴,记录我的学习路程. 时间:2014.8.1  地点:家里 今天阅读的是本书的第一章,讲的是递归问题,也是算法的基础,当然这里主要讲的是数学.但是没办法,我是一名ACMer,必须要和程序紧密联系在一起.我觉得明天还需要花一天时间来看这章,需要解决下后面的习题以及再加深点体会. 第一章 递归问题 1.1 汉诺

CodeForces 577C Vasya and Petya&#39;s Game 数学

题意就是给你一个1到n的范围 你每次可以问这个数是否可以被某一个数整除 问你要猜多少数才能确定这个数…… 一开始一点思路也没有 后来查了一下才知道 每个数都可以分为几个质数的整数次幂相乘得到…… 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<math.h> 5 #include<string.h> 6 #include<string>

SSH连接时出现「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」解决办法

用ssh來操控github,沒想到連線時,出現「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」,後面還有一大串英文,這時當然要向Google大神求助啦!收尋了一下,終於被小弟找到原因了- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@

「笔记」「ubuntu」mint个人shell样式脚本

alias ll='ls -al' use_color=false # Set colorful PS1 only on colorful terminals.# dircolors --print-database uses its own built-in database# instead of using /etc/DIR_COLORS.  Try to use the external file# first to take advantage of user additions. 

「なそう」と「なさそう」

天気予報は雨マークだったのに.空は見事な快晴. 雨の匂いもしないそんなときに一言. 「雨.降らなさそうですね」 皆様はこの一言に違和感を感じますか? 否定形と助動詞「そうだ」 目で見たことや.耳で聞いたこと.推定したことを表す助動詞「そうだ」ですが.前に否定形がきたときに「さ」を入れるか入れないかで戸惑うことはありませんか? 例えば次の三つの文をご覧ください. 「雨は降らなさそうですね」 「今日は定時で帰れなさそうだ」 「ごめん.電車が遅れてる!間に合わなさそう」 「こんなに蓄えがあったら当分は

洛谷P1313 计算系数 数学 数论

洛谷P1313 计算系数 数学 数论 1.首先我们不管这个系数 a b 那么他的系数就是杨辉三角 他那项就是 c(k,n)x^n*y^m 2.然后现在加了系数 a 和 b ,那么就只要把 a 看做 x中的,然后a与x一样,相当a^n 3.可以发现,x^n*y^m项的系数一定有一个因数a^n*b^m,所以可以提取出来. 4.然后关于求C的话由两种方法,一种方法是杨辉三角 这样要 n^2 求 但数据再大点就挂了 5.然后还可以质因数分解求 6.我是用费马小定理求逆元做的,因为 mod 别的还行,除法

【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)

http://www.4gamer.net/games/216/G021678/20140703095/ 新连载「实验做出的游戏图形」,是聚焦在特定游戏的图形上, 对它的结构和使用的技术解说为主旨.之前笔者连载的「西川善司的3D游戏入迷」,覆盖范围都很广,而与特定游戏强关联的技术解说,会在今后的新连载中处理. 作为纪念的第一回选择的,是Arc System Works开发的,2014年2月在街机上运作的格斗游戏「GUILTY GEAR Xrd -SIGN-」 全3D图形的GUILTY GEAR

【翻译】西川善司的「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,后篇

http://www.4gamer.net/games/216/G021678/20140714079/ 连载第2回的本回,  Arc System Works开发的格斗游戏「GUILTY GEAR Xrd -SIGN-」解说的后篇送到了.前篇的最后预告的那样,本回,是只能看到Anime的3D图形的2D格斗游戏产生所采用的细小方法为中心的介绍. 变形的几何体,替换几何体 GUILTY GEAR Xrd -SIGN-的图形,看上去是Cel Anime风格,并不是什么都采用Toon Shader.这

七牛云荣获「2018 中国云计算产业领军企业」称号

12 月 20 日,以「驾驭数字化转型走进智能互联时代」为主题的 2018 中国软件大会暨首届 CIO 创新峰会在北京新世纪日航饭店举行. 作为引领中国软件和信息技术服务产业发展的风向标和产业年度盛典,会上,隆重颁发了「2018 中国云计算产业领军企业」奖项.七牛云受邀出席,凭借其在云计算服务领域取得的优异成绩,荣获「2018 中国云计算产业领军企业」称号. 七牛云荣获「2018中国云计算产业领军企业」称号 中国软件大会自创办以来,一直紧跟时代步伐,把握行业热点,保持着高水准的思想内容和前沿观察