1 条题解

  • 0
    @ 2026-8-12 1:56:04

    更好的阅读体验

    考虑枚举每个孩子总共获得的钱数 ii

    根据题意知道,可以将 ii 分成几天发放,可以看成把 ii 分成若干部分,就变成了在 i1i-1 个空中放板子,每个空放或不放,共 2i12^{i-1} 个方案。

    再加上每个孩子都不给零花钱的方案,答案就应该是:

    $$\begin{aligned} &1+\sum_{i=1}^{\lfloor \frac{n}{2} \rfloor } 2^{i-1} \\ =&1+(2^{\lfloor \frac{n}{2} \rfloor}-1) \\ =&2^{\lfloor \frac{n}{2} \rfloor} \end{aligned}$$

    快速幂即可。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int mod=1e9+7;
    int n;
    
    int qpow(int x,int y){
        int res=1;
        while(y){
            if(y&1) (res*=x)%=mod;
            (x*=x)%=mod,y>>=1;
        }
        return res;
    }
    
    signed main(){
        cin>>n;
        cout<<qpow(2,n/2);
        return 0;
    }
    
    • 1

    [COCI 2025/2026 #6] 零花钱 / Džeparac

    信息

    ID
    12640
    时间
    1000ms
    内存
    512MiB
    难度
    5
    标签
    递交数
    28
    已通过
    14
    上传者