Codeforces 1409C, otra restauración de matriz

Enlace de tema

Asunto: 1409C

responder

Título

De acuerdo con la xsuma dada para yconstruir una secuencia aritmética de todos los números positivos, se requiere que el número más grande en la secuencia sea el más pequeño.

Ideas

Primero juzgue cuántos dígitos pueden caber entre xy y, tome el valor máximo ky úselo para encontrar la longitud del paso de la secuencia aritmética d, luego intente hacer los n - k -1dígitos restantes tanto como sea posible xantes, y luego póngalo si aún queda ydespués de esto.

Código AC

#include <bits/stdc++.h>

using namespace std;
//#pragma GCC optimize(2)
#define IO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define ull unsigned long long
#define ll long long
#define rep(i, x, y) for(int i=x;i<=y;i++)
#define mms(x, n) memset(x, n, sizeof(x))
#define mmc(A, tree) memcpy(A, tree, sizeof(tree))
#define eps (1e-8)
#define PI (acos(-1.0))
#define INF (0x3f3f3f3f)
#define mod (ull)(1e9+7)
typedef pair<int, int> P;

int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
#endif
    int T;
    scanf("%d", &T);
    while (T--) {
        int n;
        scanf("%d", &n);
        int x, y;
        scanf("%d%d", &x, &y);
        vector<int> ans;
        ans.push_back(x);
        ans.push_back(y);
        int k;
        int del = y - x;
        for (int i = n - 1; i >= 1; i--) {
            if (del % i == 0) {
                k = i;
                break;
            }
        }
        del = del / k;
        for (int i = 1; i <= k - 1; i++) {
            ans.push_back(x + del * i);
        }
        for (int i = 1; i <= n - k - 1; i++) {
            if (x - del > 0) {
                x -= del;
                ans.push_back(x);
            } else {
                y += del;
                ans.push_back(y);
            }
        }
        for (auto i: ans) printf("%d ", i);
        printf("\n");
    }
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_45934120/article/details/108597227
Recomendado
Clasificación