题解 | #可爱の星空#

可爱の星空

https://ac.nowcoder.com/acm/problem/20650

#include <iostream>

using namespace std;

long long dfs(long long x)
{
    if(x == 1 || x == 2) return 0;
    else
    {
        if(x % 2) return dfs(x / 2 + 1) + dfs(x / 2) + 1;
        else return dfs(x / 2) + dfs(x / 2);
    }
}

int main()
{
    int t;
    cin >> t;
    
    while(t --)
    {
        long long n;
        cin >> n;
        
        cout << dfs(n) << endl;
    }
    
    return 0;
}
如何证明dfs出的一定是最优?
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务