牛客编程巅峰赛S2第3场 - 钻石&王者ABC

整除问题

https://ac.nowcoder.com/acm/contest/9247/C

ABC题解

A:简单的公式
先看a:显然有a[2]=3*a[1];

a[3] = 3 * a[2]; 显然能找到规律:a[n]=3*a[n-1];

b同理。

然后证明:

a[n] = 2a[n-1] + 3a[n-2];

若a[n-1] = 3*a[n-2] ,则

a[n] = 3*a[n-1]; (带入上式可得)

由于n<=2 时 a[n]=3 * a[n-1];

所以这个关系可以递推到全部。

b同理。

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

B、Tree VI
由于是完全k叉树,则可以先构造出树,然后dfs遍历它即可。

比赛时我是记录每层的节点数,判断每层是否可以建立节点。

但这样要特判一些东西,其实只要根据完全k叉树的性质,先BFS构造出树,然后dfs遍历算ans即可。(这个代码略。。)

class Solution {
public:
    /**
     * 
     * @param k int整型 表示完全k叉树的叉数k
     * @param a int整型vector 表示这棵完全k叉树的Dfs遍历序列的结点编号
     * @return long长整型
     */
    vector<int>G[100007];
    int dep[100007],cnt=0,b[100007],up=0;
    long long ans=0;
    void dfs(int d,int k,int lst){
        if(dep[d]<=0 || d>up)return ;
        cnt++;
        dep[d]--;
        int now=b[cnt];
        if(cnt>1)ans+=b[cnt]^lst;
        if(d>=up||dep[d+1]<=0)return ;
        for(int i=1;i<=k;i++){
            dfs(d+1,k,now);
        }
    }
     long long tree6(int k, vector<int>& a) {
        // write code here
        for(int i=0;i<a.size();i++)b[i+1]=a[i];
        ans=0;
        if(k==1){
            for(int i=1;i<a.size();i++)ans+=a[i]^a[i-1];
            return ans;
        }
        dep[1]=1;
        int ret=a.size()-1;
        for(int i=2;;i++){
            dep[i]=min(dep[i-1]*k,ret);
            ret-=dep[i];
            if(ret==0){
                up=i;
                break;
            }
        }
        ans=0;
        dfs(1,k,0);
        return ans;
    }
};

C:整除问题
显然有:2021 = 43 * 47

有且仅有 1, 43 ,47, 2021 这4个因子。

若要x*y = k *2021.

x的因子和y因子的并集要同时包含43和47

然后:

分情况:

1:

x包含因子43,y包含因子47.

x包含因子47,y包含因子43.

这种计算会多出:x同时包含43,47因子,y同时包含43,47因子,的情况 容斥(即减去这种情况)即可。

2:

x包含因子43,47, y不包含因子43和47(为了不与情况1重复).

x包含因子不包含因子43和47(为了不与情况1重复),y包含因子43,47.

只有以上2种情况,(相当于把x因子的情况给枚举出来了,只包含43、只包含47、包含2021,只包含1)

typedef long long ll;
class Solution {
public:
    /**
     * 寻找所有能整除 2021 的数对个数
     * @param a long长整型 
     * @param b long长整型 
     * @param c long长整型 
     * @param d long长整型 
     * @return long长整型
     */
    ll cal(ll a,ll b,ll c){
        return b/c - (a-1)/c;
    }
    long long findPairs(long long a, long long b, long long c, long long d) {
        // write code here
        long long ans=0;
        ans+=cal(a,b,43)*cal(c,d,47);
        ans+=cal(a,b,47)*cal(c,d,43);
        ans-=cal(a,b,2021)*cal(c,d,2021);

        ans+=cal(a,b,2021)*(cal(c,d,1)-cal(c,d,47)-cal(c,d,43)+cal(c,d,2021));
        ans+=(cal(a,b,1) - cal(a,b,43) - cal(a,b,47) + +cal(a,b,2021))*cal(c,d,2021);
        return ans;
    }
};
全部评论

相关推荐

点赞 评论 收藏
分享
时间线:&nbsp;1.4-1.5:&nbsp;boss&nbsp;牛客&nbsp;官网&nbsp;实习僧海投了两天,&nbsp;感觉确实没啥招人的啊,&nbsp;心里凉了一半.1.6:&nbsp;中午快手约面,&nbsp;下午字节hr飞书私聊约面,&nbsp;当时想着第一次面大厂感觉三个过一个一面就已经赢了.1.7:&nbsp;下午&nbsp;3点大厂处女面,&nbsp;哈哈面试官是重邮红岩的直接保送;&nbsp;5点快手一面,&nbsp;我说这个是我的第二次大厂面试,&nbsp;面试官问要是拿到字节和快手选择哪个,&nbsp;我说昨天看了一晚上快手百分百选快手哈哈哈.&nbsp;晚上5.30字节约二面,&nbsp;快手约二面,&nbsp;小红书约一面.1.8:&nbsp;下午2点快手二面,&nbsp;聊天面体验非常好(当天电话确认入职时间);&nbsp;4点字节二面这次不是校友了,&nbsp;然后有一个CSS实现switch效果的忘记属性咋写了,&nbsp;感觉危了;&nbsp;7.30&nbsp;问字节hr是不是挂了;&nbsp;9点开始小红书一面,&nbsp;难死我了,&nbsp;但我还是笑着面完了,&nbsp;然后卸载了小红书,&nbsp;但是过了一会会小红书hr约二面,&nbsp;遂下回来了字节约三面.1.9:&nbsp;下午2点字节三面,&nbsp;依旧聊天+算法,&nbsp;自己太菜了有一个写错了,&nbsp;面完感觉又危了;&nbsp;5点面小红书20min结束(offer审批);5.30又去问字节hr是不是挂了,&nbsp;hr小姐姐说干嘛用一个句式,&nbsp;我说手写题又又又没写出来😂,&nbsp;2min后约hr面;8.30&nbsp;快手offer总结,&nbsp;自己运气好遇到了好公司好部门好面试官,&nbsp;字节剪映&nbsp;快手电商&nbsp;小红书支付的面试体验都非常好,&nbsp;不会的题会带你一步一步思考,&nbsp;流程也非常快全部都是当天推进,&nbsp;小红书是以分钟为单位推进.&nbsp;&nbsp;面经以及细节等我慢慢整理,&nbsp;&nbsp;以及保佑所有的审批不要出问题,&nbsp;我是真怕最后全过了0offer😂bg:&nbsp;重邮&nbsp;大数据&nbsp;蓝山工作室&nbsp;一段非大厂实习
独角仙梦境:这是真👻了
找实习记录
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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