P15889 [COCI 2025/2026 #6] 零花钱 / Džeparac
P15889 [COCI 2025/2026 #6] 零花钱 / Džeparac
考虑枚举每个孩子总共获得的钱数 ,
根据题意知道,可以将 ii 分成几天发放,可以看成把 分成若干部分,就变成了在 i−1i-1 个空中放板子,每个空放或不放,共 2i−12^{i-1} 个方案。
再加上每个孩子都不给零花钱的方案,答案就应该是:
1+∑i=1⌊n2⌋2i−1=1+(2⌊n2⌋−1)=2⌊n2⌋\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}
快速幂即可。
代码:
C++
#include
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
`#include
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;
coutqpow(2,n/2);
return 0;
}`