zoukankan      html  css  js  c++  java
  • [bzoj1677]求和

    dp,用f[i]表示i划分的方案,直接枚举最后一个数是错误的,因为会导致c重复计数,然后正解十分神奇——
    当i为奇数,那么分解中一定有1,因此f[i]=f[i-1]
    当i为偶数若有1,同样转移到f[i-1];没有1,可以将所有因数除以2,即f[i]=f[i-1]+f[i/2],注意对1e9取模

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define mod 1000000000
     4 int n,f[1000005];
     5 int main(){
     6     scanf("%d",&n);
     7     f[0]=1;
     8     for(int i=1;i<=n;i++)
     9         if (i&1)f[i]=f[i-1];
    10         else f[i]=(f[i-1]+f[i/2])%mod;
    11     printf("%d",f[n]);
    12 }
    View Code
  • 相关阅读:
    监听
    用户管理
    oracle网络
    实例 参数
    存储管理
    oracle 体系
    实例
    修改
    集合操作
    17.08.18
  • 原文地址:https://www.cnblogs.com/PYWBKTDA/p/11851234.html
Copyright © 2011-2022 走看看