1.15寒假集训

A:

1.15寒假集训_第1张图片

解题思路:

题目意思就是找大于等于n的最小3的倍数,当n为3的倍数时,最小就为n,否则输出3 * (n / 3  + 1)。

下面是c++代码:

#include
using namespace std;
int main()
{
    long long n;
    cin >> n;
    if(n % 3 == 0){
        cout << n;
    }else{
        cout << 3 *(n / 3 + 1);
    }
    return 0;
}

B:

1.15寒假集训_第2张图片

解题思路:

题目意思只要输出一样的就好,长途会骗你出什么,比如告诉你出石头,你就会出布来取得胜利,他就会出剪刀反制你,所以你只要出石头就能获得胜利。

下面是c++代码:

#include
using namespace std;
int main()
{
    string s;
    cin >> s;
    if(s == "shitou"){
        cout << "shitou";
    }else if(s == "jiandao"){
        cout << "jiandao";
    }else{
        cout << "bu";
    }
    return 0;
}

C:

1.15寒假集训_第3张图片

解题思路:

走楼梯需要的时间:(n - 1) * a

坐电梯需要的时间:(n - 1) * b + (k - 1) * b

下面是c++代码:

#include
using namespace std;
int main()
{
    int n, k, a, b,pa,dian;
    cin >> n >> k >> a >> b;
    pa = (n - 1) * a,dian = (n - 1) * b + (k - 1) * b;
    if(pa > dian){
        cout << 1;
    }else if(pa < dian){
        cout << 2;
    }else{
        cout << 0;
    }
    return 0;
}

D:

1.15寒假集训_第4张图片

解题思路:

依次乘2,当1的个数大于等于n就结束循环,输出次数\

下面是c++代码:

#include
using namespace std;
int main()
{
    int t,n,sum = 1,count = 0;
    cin >> t;
    while(t != 0){
        cin >> n;
        sum = 1;
        count = 0;
        while(sum < n){
            sum *= 2;
            count++;
        }
        cout << count << endl;
        t--;
    }
    return 0;
}

E:

1.15寒假集训_第5张图片

解题思路:

题目意思就是循环n次,ans每次都加上cnt,然后cnt + 2,循环结束时输出ans,时间复杂度O(n),如果加上cnt的那里用的是题目中的循环来加也能AC,只不过时间复杂度要高一点,O(n * cnt)。

下面是c++代码:

#include
using namespace std;
int main()
{
    long long n,ans = 0,cnt = 1;
    cin >> n;
    while(n != 0){
        ans += cnt;
        cnt += 2;
        n--;
    }
    cout << ans;
    return 0;
}

你可能感兴趣的:(c++,算法,数据结构)