算法--简单数学

Posted Tancy.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法--简单数学相关的知识,希望对你有一定的参考价值。

简单数学


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


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

知识

该图片转自有猷大佬

后续补充中···

类型练习题

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;

以上是关于算法--简单数学的主要内容,如果未能解决你的问题,请参考以下文章

LQ0008 饮料换购模拟+数学

什么是瓶盖防伪码标签,全国315产品防伪查询中心

饮料瓶盖二维码红包是怎样实现的?

洛谷 P1316 丢瓶盖

算法--简单数学

洛谷P1316 丢瓶盖