牛客编程巅峰赛S2赛季(高级场第3场)考题参考代码(非官方)

简单的公式

const int mode=1e9+7;
class Solution {
public:
    /**
     * 返回c[n]%1000000007的值
     * @param n long长整型 即题目中的n
     * @return int整型
     */
     long long Mode(long long a, long long b){
        long long sum = 1;
        while (b) {
            if (b%2) {
                sum =(sum*a)%mode;
                b--;
            }
            b/=2;
            a=a*a%mode;
      }
    return sum;
}
    int Answerforcn(long long n) {
        // write code here
        long long an=2*Mode(3,n-1)%mode;
        long long bn=7*Mode(5,n-1)%mode;
        long long cn=an*bn%mode;
        int ans=cn;
        return ans;
    }
};


Tree VI

class Solution
{
public:
    typedef long long ll;
    ll n, k, d[100010];
    ll ans = 0, cnt = 1;
 
    inline void dfs(ll x, ll p)
    {
        for (ll i = -k + 2; i <= 1; ++i) {
            if (x * k + i <= n) {
                ++cnt;
                ans += (d[p] ^ d[cnt]);
                dfs(x * k + i, cnt);
            } else return;
        }
    }
    long long tree6(int K, vector<int> &a)
    {
        n = a.size();
        k = K;
        for (int i = 0; i < n; ++i)
        {
            d[i + 1] = a[i];
        }
        dfs(1, 1);
        return ans;
    }
};



整除问题

class Solution {
  using ll = long long;
 
  ll get_43(ll n) {
    ll ans = n / 43;
    ans = ans - ans / 47;
    return ans;
  }
 
  ll get_47(ll n) {
    ll ans = n / 47;
    ans = ans - ans / 43;
    return ans;
  }
 
  ll get_2021(ll n) { return n / 2021; }
 
  ll get(ll n, ll m) {
    ll ans = 0;
    // 43*47
    ans = ans + get_43(n) * get_47(m);
    ans = ans + get_47(n) * get_43(m);
 
    // 1*2021
    ans = ans + n * get_2021(m);
    ans = ans + m * get_2021(n);
    ans = ans - get_2021(n) * get_2021(m);
 
    return ans;
  }
 
public:
  /**
   * 寻找所有能整除 2021 的数对个数
   * @param A long长整型
   * @param B long长整型
   * @param C long长整型
   * @param D long长整型
   * @return long长整型
   */
  long long findPairs(long long A, long long B, long long C, long long D) {
    ll ans = get(B, D);
    ans = ans - get(A - 1, D);
    ans = ans - get(B, C - 1);
    ans = ans + get(A - 1, C - 1);
 
    return ans;
  }
};
 


全部评论

相关推荐

勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务