腾讯测开(一面)

1. 自我介绍

2. 聊简历

3. 拥堵控制和流量控制

4. 进程通信? (信号,信号量,消息队列,共享内存)

5. 什么是消息?

6. leftjoin 和 rightjoin的区别?

7. 手撕代码 输入任意一个整数n,推算当前日期前n天或者后n天日期,编程用unix时间按照s推算,不能使用库函数。

许愿二面

#include<bits/stdc++.h>
#define MAXVAL 100005
using namespace std;

#define DAY (24*60*60)
#define YEAR 365
int MONTH[12] = {31, 28, 31, 30, 31, 30, 31, 31 ,30, 31 ,30,31};

bool isLeapYear(long year) {
        return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0);
    }


string dateOfday(int n)
{
    time_t t = time(0);

    int dayNum = t/DAY + n;

    string year,month,day;
    int cnt = 0;   //1970
    bool flag = false; // 默认非闰年
    string ans; 



    while(dayNum>366)
    {
        if(isLeapYear(1970+cnt)) dayNum -= 1;
        dayNum -= 365;
        cnt++;
       }

       if (!isLeapYear(1970+cnt)) flag = true;
       if(dayNum == 365 && !flag) cnt++; // 非闰年,365天,加一年


       year = to_string(1970+cnt);


    if(flag) MONTH[1] = 29;
    for(cnt = 1; cnt<=12 && dayNum>0; ++cnt)
    {
        dayNum -= MONTH[cnt-1];
    }

    month = to_string(cnt-1);
    day = to_string(dayNum + MONTH[cnt-2]);
    ans = year+"-"+month+"-"+day;
    return ans;
}


int main(int argc, char const *argv[])
{
    int n;
    cin>>n;

    cout<<dateOfday(n);
}
全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务