基础算法题目
一、a+b
n组样例 的 a+b
- 对于n组用例的输入,可以将值存数组,也可以边输入边输出(判题会重定向)
- 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;
}
二、斐波那契数列
- 对结果取模运算与对中间结果取模是一样的(避免中间值超范围)
- 数组尽量开到全局:节约程序栈空间、不需要初始化
- 科学计数法表示方法:1e9 = 1 * 10 ^ 9
- 数组多开大一点,避免舍去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)进制
- 进制转换:取模记录地板除 + 反向输出
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;
}