10.13 1.0考试 第三题 七十和十七 题解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.13 1.0考试 第三题 七十和十七 题解相关的知识,希望对你有一定的参考价值。

技术分享

技术分享

技术分享

  这道题太尴尬了……

  当时打完第二题暴力一看还有两个多小时,开心的要死要死的,结果乐极生悲,在第二题调了太长时间,到这题就剩半个多小时了……

  看到输出C没反应过来,但是直觉告诉我和逆元有关,然后就发现答案就是a/b在模意义下的结果,然后也没时间想正解了,先打了个暴力上去,死调不出来。考完后才知道我们每将一个数提到开头,我们就要去重新扫一遍……SB出题人没说清楚啊!当时估摸也是太紧张了,忘了去试一下。

  正解是这样的:我们设f[i]为E的分子,那么转移如下:

    f[i]=f[i-1]+f[i-1]+2^0*jc[i-1]+f[i-1]+2^1*jc[i-1]+^+f[i-1]+2^i-1*jc[i-1].其中jc为阶乘。

  2^x就是我们把数x+1放在最后一位比f[i-1]增加的方案数。jc[i-1]就是刨去x后有多少排列方式。

技术分享
 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <queue>
 6 #include <algorithm>
 7 #include <cmath>
 8 #include <map>
 9 #define N 100005
10 using namespace std;
11 int n,p=1000000007;
12 long long exgcd(long long a,long long b,long long c)
13 {
14     if(!a)return -1;
15     if(c%a==0)return c/a;
16     long long t=exgcd(b%a,a,(((-c%a)+a)%a));
17     if(t==-1)return t;
18     return (t*b+c)/a;
19 }
20 long long jc[N],xp[N],f[N];
21 int main()
22 {
23     scanf("%d",&n);
24     xp[0]=1;
25     for(int i=1;i<=N-2;i++)xp[i]=(xp[i-1]*2)%p;
26     jc[0]=1;
27     for(int i=1;i<=N-2;i++)jc[i]=(jc[i-1]*i)%p;
28     f[1]=0;
29     for(int i=2;i<=n;i++)
30     {
31         f[i]=((i*f[i-1])%p+((xp[i-1]-1)*jc[i-1]%p))%p;
32     }
33     printf("%lld\\n",f[n]*exgcd(jc[n],p,1)%p);
34     return 0;
35 }
View Code

 

以上是关于10.13 1.0考试 第三题 七十和十七 题解的主要内容,如果未能解决你的问题,请参考以下文章

10.13 1.0考试 第二题 学数数 题解

全国计算机等级考试二级Python(2021年9月)备考笔记 第十二天

bzoj 2752 9.20考试第三题 高速公路(road)题解

全国计算机等级考试二级Python(2021年9月)备考笔记 第十四天

10.12 考试 第三题 所驼门王的宝藏题解

9.27考试 SD_le NOIP模拟题 第三题 建造游乐场题解