[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
Back to Blog

相关文章

阅读更多 »

问题 8:统计元音

大家好!👋 今天我们来解决一个字符串操作问题:Counting Vowels。目标是编写一个函数,统计给定字符串中元音的数量……