算法–简单数学

简单数学


又名 脑筋急转弯 小学奥数
算法基础系列


 前言:由于这类数学题非常简答,遇到的题目直接记忆即可

知识

该图片转自有猷大佬
在这里插入图片描述
在这里插入图片描述

后续补充中···

类型练习题

1205. 买不到的数目
在这里插入图片描述

这是一类非常经典的数学题,没有思路的话,可以先打表找规律
公式类型题目,结果是 (p - 1) * (q - 1) - 1

#include <cstdio>
#include <iostream>
using namespace std;
int main()
{
    int p, q;
    cin >> p >> q;
    cout << (p - 1) * (q - 1) - 1 << endl;
    return 0;
}

1211. 蚂蚁感冒
在这里插入图片描述
在这里插入图片描述
脑筋急转弯
蚂蚁调头的情况忽略,直接穿过
第一个蚂蚁向右走的情况:
1.右边向左走的,必然被感染
2.右边向右走,必然不会被感染
3.左边向左走,必然不会被感染
4.左边向右走:
(1)右边存在向左走,则必然被感染
(2)右边不存在向左走,则必然不会被感染

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;

const int N = 55;

int x[N];          //记录蚂蚁状态
int l = 0, lr = 0; // left表示左边向右走  right表示右边向左走
int n;

int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> x[i];

    for (int i = 1; i < n; i++)
    {
        if (abs(x[i]) < abs(x[0]) && x[i] > 0)//abs 求绝对值
            l++;
        else if (abs(x[i]) > abs(x[0]) && x[i] < 0)
            lr++;
    }

    if (x[0] > 0 && lr == 0 || x[0] < 0 && l == 0)
        cout << 1 << endl;
    else
        cout << lr + l + 1 << endl;

    return 0;
}

1216. 饮料换购
在这里插入图片描述

小学奥数题
模拟一下即可

#include <iostream>

using namespace std;


int main()
{
    int n;//表示瓶盖
    cin >> n;
    int res = n;// 表示喝了多少瓶

    while (n>=3)
    {
        res += n / 3;
        n = n / 3 + n % 3;

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>