高考後第一次Codeforces Round 952 (Div. 4)

Alaso_shuang發表於2024-07-10

A Creating Words

思路:拿一個容器交換兩數值即可

#include<bits/stdc++.h>
using namespace std;
const int N = 100001;
char a[N],b[N];
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s %s",a,b);
        char jiaohuan = a[0];
        a[0] = b[0];
        b[0] = jiaohuan;
        printf("%s %s\n",a,b);

    }
    
    return 0;
}

B. Maximum Multiple Sum

思路點撥:目的是找出一個整數 a,使得 a 到 n 之間所有 a 的倍數的和最大
對於任何小於等於 n 的整數 a,其倍數的和可以透過求和公式計算:

#include <iostream>
using namespace std;
int main() 
{
    int t;
    scanf("%d",&t);
    while (t--) {
        int n;
        scanf("%d",&n);
        int op = 0;
        int max_sum = 0;
        
        // 遍歷所有可能的a值,計算最大和
        for (int a = 2; a <= n; a++) 
        {
            int sum = 0;
            int k = n / a; // 計算小於等於n的a的倍數的數量
            for (int i = 1; i <= k; i++) 
            {
                sum += i * a;
            }
            if (sum > max_sum) 
            {
                max_sum = sum;
                op = a;
            }
        }
        
        printf("%d\n",op);
    }
    return 0;
}

C. Good Prefixes

大意:計算陣列中“好”的非空字首的數量。一個字首是“好”的,如果它包含了一個元素,這個元素等於其他所有元素的和。
思路:字首和

相關文章