๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[๋ฐฑ์ค€] 1024๋ฒˆ: ์ˆ˜์—ด์˜ ํ•ฉ - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/๋ฐฑ์ค€

[๋ฐฑ์ค€] 1024๋ฒˆ: ์ˆ˜์—ด์˜ ํ•ฉ - C++

.23 2022. 2. 23. 17:11
๋ฌธ์ œ

N๊ณผ L์ด ์ฃผ์–ด์งˆ ๋•Œ, ํ•ฉ์ด N์ด๋ฉด์„œ, ๊ธธ์ด๊ฐ€ ์ ์–ด๋„ L์ธ ๊ฐ€์žฅ ์งง์€ ์—ฐ์†๋œ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ L์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , L์€ 2๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

๋งŒ์•ฝ ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด, ์—ฐ์†๋œ ์ˆ˜๋ฅผ ์ฒซ์งธ ์ค„์— ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๊ธธ์ด๊ฐ€ 100๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์ˆ˜์—ด์ด ์—†์„ ๋•Œ๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค.


์ฝ”๋“œ์ ์ธ ์Šคํ‚ฌ๋ณด๋‹ค ์ˆ˜ํ•™์ ์ธ ์ˆ˜์‹์„ ์ข€ ๋” ์ƒ๊ฐํ•ด๋ดค์—ˆ์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ..

์ฒ˜์Œ์— ๋‹ค๋“ค ํ•˜๋“ฏ ํ™€/์ง์ˆ˜๋กœ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐ์„ ํ•ด๋ดค๋Š”๋ฐ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ์— ์ ‘๊ทผ์„ ๋ชปํ•˜๊ฒ ์–ด์„œ ์ฐพ์•„๋ดค๋”๋‹ˆ ์ˆ˜์‹์œผ๋กœ ์ƒ๊ฐํ•ด๋ด์•ผํ–ˆ๋‹ค.

 

L ๊ธธ์ด๋งŒํผ ์—ฐ์†๋œ ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ ์ˆ˜์—ด์˜ ํ•ฉ์ด N์ธ ๊ฒƒ์„ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

์ด ๋•Œ t๋Š” ์ˆ˜์—ด์˜ ํ•ฉ์ด๋ฏ€๋กœ t = L(L - 1) / 2์ด๋‹ค.

 

x๋Š” ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ฝ”๋“œ
#include <cstdio>

int main(void) {
    int N, L;
    scanf("%d %d", &N, &L);

    int start = -1, count = 0;
    
    for(int i = L; i <= 100; i++) {
        int t = i * (i - 1) / 2;

        if((N - t) % i == 0 && (N - t) / i >= 0) {
            start = (N - t) / i;
            count = i;
            break;
        }
    }

    if(start < 0) {
        printf("%d\n", start);
        return 0;
    }
    for(int i = 0; i < count; i++) {
        printf("%d ", start + i);
    }
    printf("\n");
    return 0;
}
Comments