Skip to content

基础算法题目

一、a+b

n组样例 的 a+b

  1. 对于n组用例的输入,可以将值存数组,也可以边输入边输出(判题会重定向)
  2. cin、cout的时间效率不如printf、scanf
cpp
/**
 * n组 a+b
 * @author  王铭颢
 * @Date  2022/11/23 01:11
 */

#include "iostream"

using namespace std;

int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int a, b;
        cin >> a >> b;
        cout << a + b << endl;
    }
    return 0;
}

二、斐波那契数列

  1. 对结果取模运算与对中间结果取模是一样的(避免中间值超范围)
  2. 数组尽量开到全局:节约程序栈空间、不需要初始化
  3. 科学计数法表示方法:1e9 = 1 * 10 ^ 9
  4. 数组多开大一点,避免舍去0下标后越界
cpp
/**
 * 斐波那契数列
 * @author  王铭颢
 * @Date  2022/11/23 01:16
 */

#include "iostream"

using namespace std;
int fab[100005];
const int MOD = 1e9 + 7;

int main() {
    fab[1] = fab[2] = 1;
    for (int i = 3; i <= 100000; ++i) {
        fab[i] = fab[i - 1] + fab[i - 2] % MOD;
    }
    int n;
    cin >> n;
    cout << fab[n] << endl;
    return 0;
}

三、进制转换

十进制转换成R(2-16)进制

  1. 进制转换:取模记录地板除 + 反向输出
cpp
/**
 * 进制转换
 * @author  王铭颢
 * @Date  2022/11/23 01:29
 */


#include "iostream"

using namespace std;
char ans[105];
int p;

int main() {
    int num, R;
    cin >> num >> R;
    if (num < 0) {
        num = -num;
        cout << "-";
    }
    if (num == 0) {
        cout << "0";
    }
    int tmp;
    while (num) {
        tmp = num % R;
        if (num <= 9) {
            ans[p++] = tmp + '0';
        } else {
            ans[p++] = tmp + 'A' - 10;
        }
        num /= R;
    }
    for (int i = p - 1; i >= 0; i--) {
        cout << ans[i];
    }
    cout << endl;
    return 0;
}

Released under the MIT License.