[BOJ/C, C++] 步骤式解题 数学 1
发布: (2026年1月3日 GMT+8 17:48)
2 min read
原文: Dev.to
Source: Dev.to
进制转换 (问题链接)
#include
#include
using namespace std;
int main() {
string N; int B; cin >> N >> B;
int res = 0;
for (int i = 0; i
}
#include
using namespace std;
int main() {
int N, B; cin >> N >> B;
string res = "";
while (N) {
int temp = N % B;
N /= B;
res = (char)(temp >= 10 ? temp - 10 + 'A' : temp + '0') + res;
}
cout
}
int main() {
int T; scanf("%d", &T);
for (int i = 0; i
}
int main() {
int T; scanf("%d", &T);
int coins[] = { 25, 10, 5, 1 };
while (T--) {
int C; scanf("%d", &C);
for (int i = 0; i
}
}
int main() {
int N, n = 2; scanf("%d", &N);
while (N--) n += n - 1;
printf("%d", n * n);
}
- 由于从第 1 阶(有两个点)开始,所以把初始值
n设为2。
解法 2(利用数学公式)
#include
#include
using namespace std;
int main() {
int N; cin >> N;
int t = pow(2, N) + 1;
cout
}
int main() {
int N; scanf("%d", &N);
int i = 1; N--;
for (; N > 0; i++) N -= 6 * i;
printf("%d", i);
}
- 通过每次减去
1, 6, 12, …, 6·(n‑1)来求出对应房间的层数。
2869号 蜗牛想爬上去 (问题链接)
#include
int main() {
int A, B, V; scanf("%d %d %d", &A, &B, &V);
V -= A; // 最后一天需要爬的高度
A -= B; // 每天实际上升的高度
V % A == 0 ? printf("%d", 1 + V / A)
: printf("%d", 2 + V / A);
}
- 先在
V中减去A,预先算出最后一天需要爬的高度。 - 剩余的高度用每天实际上升的高度
A‑B除,商加1即为总天数。 - 如果有余数,则还需要再爬一天,故再加
1。