A

签到题,注意题目数据范围 1A,B50000,开long long

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

int main()
{
	long long a, b;
	cin >> a >> b;
	
	cout << a * b << endl;
	
	return 0;
}

B

签到题,没什么可说的。

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

int main()
{
	double n, bike, walk;
	cin >> n;
	
	bike = 27 + 23 + n / 3;
	walk = n / 1.2;
	
	if(bike == walk) cout << "All" << endl;
	else if(bike > walk) cout << "Walk" << endl;
	else cout << "Bike" << endl;
    
	return 0;
}

C

数组作业题,找到最大值,按要求枚举求和即可。

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

int a[110];
int n, maxn = -0x3f3f3f3f, s;

int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++ ) cin >> a[i];
    
    for (int i = 0; i < n; i ++ )
    	if (a[i] > maxn)
    		maxn = a[i];
    		
    for (int i = 0; i < n; i ++ )
    	if (a[i] != maxn)
    		s += a[i];
    		
    cout << s << endl;
    
    return 0;
}

D

算法:模拟

开对应变量记录值的变化,循环表示天数变化。

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

int main()
{
    int m, k, now, cnt, ans;
    cin >> m >> k;
    
    now = m; // 当前钱数
    cnt = 0; // 已经花了的钱数
    ans = 0; // 答案天数
    
    while (now > 0)
    {
        now -- ;
        cnt ++ ;
        ans ++ ;
        if (cnt % k == 0)
            now ++ ;
    }
    
    cout << ans << endl; 
    
    return 0;
}

E

NOIP2015普及组

算法:枚举,模拟

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

int main()
{
    int n;
    cin >> n;

    int res = 0;
    for (int i = 1, k = 0; k < n; i ++ )
        for (int j = 0; j < i && k < n; j ++, k ++ )
            res += i;

    cout << res << endl;
    return 0;
}

F

NOIP2016普及组

算法:枚举、模拟

由于老师只能买一种包装的铅笔,因此直接枚举买哪种包装,然后求出最少需要买多少包,才能使总数量不少于 n 即可。其中 n 是老师需要买的铅笔总数。

假设当前枚举的包装中的铅笔是 s 个,则最少需要买 ⌈n / s⌉=⌊(n+s−1) / s⌋ 包。

时间复杂度

每种包装枚举一次,因此时间复杂度是 O(m),其中 m 是包装总数。

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

int main()
{
    int n;
    scanf("%d", &n);

    int res = 1e9;
    for (int i = 0; i < 3; i ++ )
    {
        int s, p;
        scanf("%d%d", &s, &p);
        res = min(res, (n + s - 1) / s * p);
    }

    printf("%d\n", res);

    return 0;
}

2 comments

  • @ 2023-11-17 17:28:26
    #include <bits/stdc++.h>
    using namespace std;
    int main ()
    {
    int n,a,c=0,b=0;
    cin >> n;
    while (n--)
    {
    cin >> a;
    if (a > b)
    b = a;
    c = c+a;
    }
    cout << c-b  << endl;
    return 0;
    }
    
    第3题,用总和减去最大值
    
    • @ 2023-11-25 15:38:56
      1. 建议调一下你的代码大括号缩进
      2. 如果所有数字都为负数,b = 0 就找不到真正的最大值,建议初始化为 0x3f3f3f3f
  • @ 2023-11-17 17:25:30

    老师为什么不出HelloWorld

    • @ 2023-11-25 15:40:04

      后面考虑出一题:用10钟不同方式输出 Hello World

  • 1