牛客编程巅峰赛S1第4场 - 青铜&白银

牛客编程巅峰赛S1第4场 - 青铜&白银
A-组合数第k小

https://ac.nowcoder.com/acm/contest/6221/A
牛牛想知道在所有不同的组合数值中,第k小的组合数值是多少呢。给定一个k,返回第k小的组合数值。
在这里插入图片描述
C++
这就不用多讲了吧,组合数从1-1e9都有。

class Solution {
public:
    /**
     * 
     * @param k int整型 
     * @return int整型
     */
    int kthSamllest(int k) {
        // write code here
        return k;
    }
};

B-浅尝辄止
链接:https://ac.nowcoder.com/acm/contest/6221/B
来源:牛客网

在这里插入图片描述
在这里插入图片描述
C++
这道题首先要推理出一个坐标公式n/(n/i)
表如下:
在这里插入图片描述
会发现这个坐标内的数字都是相同的,因为向下取整,所以除数的整数部分结果都是相同的。

class Solution
{
public:
    /**
     *
     * @param n long长整型
     * @return int整型
     */
    int work(long long n)
    {
        // write code here
        long long sum=0;
        long long l,r;
        for(l=1; l<=n; l=r+1)
        {
            r=n/(n/l);
            sum+=(n/l)*(r-l+1);
            sum%=998244353;
        }
        return sum%998244353;
    }
};

C-Tree I
https://ac.nowcoder.com/acm/contest/6221/C
在这里插入图片描述
在这里插入图片描述
了解一下完全二叉树的性质,就可以知道(a[i], a[2i]) 和(a[i],a[2i+1]) 是树上的边。

class Solution
{
public:
    /**
     *
     * @param a int整型vector 表示这棵完全二叉树的Bfs遍历序列的结点编号
     * @return long长整型
     */
    long long tree1(vector<int>& a)
    {
        long long ans=0;
        for(int i=2; i<=a.size(); i++)
            ans+=a[i-1]^a[i/2-1];
        return ans;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值