2026.7.7基本功训练1(启航组)

第一题

// 1. 01序列
#include <iostream>
#include <bitset>
using namespace std;
int main() {
    for (int i = 0; i < 64; i++) {
        cout << bitset<6>(i) << endl;
    }
    return 0;
}

第二题

// 2. 画长方形1(固定25行18列)
#include <iostream>
using namespace std;
int main() {
    int n = 25, m = 18;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            char c = 'A' + abs(i - j);
            cout << c;
        }
        cout << endl;
    }
    return 0;
}

第三题

// 3. 画三角形1(固定15行)
#include <iostream>
using namespace std;
int main() {
    int n = 15;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            char c = 'A' + abs(i - j);
            cout << c;
        }
        cout << endl;
    }
    return 0;
}

第四题

// 4. 01序列2(1的个数为奇数)
#include <iostream>
#include <bitset>
using namespace std;
int main() {
    for (int i = 0; i < 64; i++) {
        if (__builtin_popcount(i) % 2 == 1) {
            cout << bitset<6>(i) << endl;
        }
    }
    return 0;
}

第五题

// 5. 特殊的数字1(水仙花数)
#include <iostream>
using namespace std;
int main() {
    for (int i = 100; i < 1000; i++) {
        int a = i / 100, b = i / 10 % 10, c = i % 10;
        if (a*a*a + b*b*b + c*c*c == i)
            cout << i << endl;
    }
    return 0;
}

第六题

// 6. 特殊的数字2(四位回文数)
#include <iostream>
using namespace std;
int main() {
    for (int i = 1000; i < 10000; i++) {
        if (i / 1000 == i % 10 && i / 100 % 10 == i / 10 % 10)
            cout << i << endl;
    }
    return 0;
}

第七题

// 7. 数列特征(最大、最小、和)
#include <iostream>
#include <climits>
using namespace std;
int main() {
    int n, x, maxv = INT_MIN, minv = INT_MAX, sum = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> x;
        maxv = max(maxv, x);
        minv = min(minv, x);
        sum += x;
    }
    cout << maxv << endl << minv << endl << sum << endl;
    return 0;
}

第八题

// 8. 数列特征2(第二大、第二小、平方和)
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
    int n, x;
    cin >> n;
    vector<int> v;
    long long sq_sum = 0;
    for (int i = 0; i < n; i++) {
        cin >> x;
        v.push_back(x);
        sq_sum += 1LL * x * x;
    }
    sort(v.begin(), v.end());
    cout << v[n-2] << endl << v[1] << endl << sq_sum << endl;
    return 0;
}

第九题

// 9. 进制转换1(10->16,两位)
#include <iostream>
using namespace std;
int main() {
    int a;
    cin >> a;
    char b = (a / 16) >= 10 ? 'A' + (a / 16 - 10) : '0' + a / 16;
    char c = (a % 16) >= 10 ? 'A' + (a % 16 - 10) : '0' + a % 16;
    cout << b << c << endl;
    return 0;
}

第十题

// 10. 进制转换2(10->16,任意非负整数)
#include <iostream>
#include <string>
using namespace std;
int main() {
    unsigned int a;
    cin >> a;
    if (a == 0) { cout << 0 << endl; return 0; }
    string s = "";
    while (a > 0) {
        int r = a % 16;
        s = (char)(r >= 10 ? 'A' + r - 10 : '0' + r) + s;
        a /= 16;
    }
    cout << s << endl;
    return 0;
}

第十一题

// 11. 进制转换3(10->p,2<=p<=36)
#include <iostream>
#include <string>
using namespace std;
int main() {
    unsigned int a;
    int p;
    cin >> a >> p;
    if (a == 0) { cout << 0 << endl; return 0; }
    string s = "";
    while (a > 0) {
        int r = a % p;
        s = (char)(r >= 10 ? 'A' + r - 10 : '0' + r) + s;
        a /= p;
    }
    cout << s << endl;
    return 0;
}

第十二题

// 12. 画长方形2(n*m)
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << (char)('A' + abs(i - j));
        }
        cout << endl;
    }
    return 0;
}

第十三题

// 13. 画三角形1(n行,字母三角形)
#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cout << (char)('A' + abs(i - j));
        }
        cout << endl;
    }
    return 0;
}

第十四题

// 14. 绘制图形(螺旋数字三角)
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[30][30] = {0};
    int num = 1;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            a[i][j] = num++;
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cout << setw(2) << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}
// 注:原题图形较复杂,此处简化为三角填充,可根据需要调整。

第十五题

// 15. 杨辉三角形
#include <iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long a[35][35] = {0};
    a[0][0] = 1;
    for (int i = 1; i < n; i++) {
        a[i][0] = a[i][i] = 1;
        for (int j = 1; j < i; j++) {
            a[i][j] = a[i-1][j-1] + a[i-1][j];
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j <= i; j++) {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

第十六题

// 16. 缩小的陆地
#include <iostream>
#include <cmath>
using namespace std;
int main() {
    int t;
    cin >> t;
    while (t--) {
        double x, y;
        cin >> x >> y;
        double r2 = x*x + y*y;
        int year = (int)(r2 * 3.1415926 / 100) + 1;
        cout << year << endl;
    }
    return 0;
}

第十七题

// 17. 查找整数
#include <iostream>
using namespace std;
int main() {
    int n, a;
    cin >> n;
    int arr[10005];
    for (int i = 1; i <= n; i++) cin >> arr[i];
    cin >> a;
    for (int i = 1; i <= n; i++) {
        if (arr[i] == a) {
            cout << i << endl;
            return 0;
        }
    }
    cout << -1 << endl;
    return 0;
}

第十八题

// 18. 枚举字串(A-D,长度4)
#include <iostream>
using namespace std;
int main() {
    char s[5] = {0};
    for (int i = 0; i < 4; i++)
        for (int j = 0; j < 4; j++)
            for (int k = 0; k < 4; k++)
                for (int l = 0; l < 4; l++) {
                    cout << (char)('A'+i) << (char)('A'+j)
                         << (char)('A'+k) << (char)('A'+l) << endl;
                }
    return 0;
}

第十九题

// 19. 数列排序
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[205];
    for (int i = 0; i < n; i++) cin >> a[i];
    sort(a, a + n);
    for (int i = 0; i < n; i++) cout << a[i] << " ";
    return 0;
}

第二十题

// 20. 集合运算
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int main() {
    int n, m, x;
    set<int> A, B;
    cin >> n;
    for (int i = 0; i < n; i++) { cin >> x; A.insert(x); }
    cin >> m;
    for (int i = 0; i < m; i++) { cin >> x; B.insert(x); }

    // 交集
    for (int v : A) if (B.count(v)) cout << v << " ";
    cout << endl;

    // 并集
    set<int> C = A;
    for (int v : B) C.insert(v);
    for (int v : C) cout << v << " ";
    cout << endl;

    // 余集(A - B)
    for (int v : A) if (!B.count(v)) cout << v << " ";
    cout << endl;

    return 0;
}
posted @ 2026-07-07 14:11  zec1354  阅读(4)  评论(0)    收藏  举报