안녕하세요. 오늘은 돌림판을 돌릴 거예요.

문제

https://www.acmicpc.net/problem/11504

아이디어

그냥 모든 수를 다 돌려보면 됩니다.
문제에서는 입력으로 X랑 Y를 다 쪼개서 입력했지만 M이 9 이하이기 때문에 그냥 다 합쳐서 하나의 수로 생각해도 상관 없습니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;

ll N, M, X, Y, arr[111] = { 0 };
bool correct(ll idx)
{
    ll num = 0, i;
    for (i = idx; i < idx + M; i++)
    {
        num *= 10;
        num += arr[i % N];
    }
    return X <= num && num <= Y;
}

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll T, num;

    cin >> T;
    while (T--)
    {
        cin >> N >> M;
        X = Y = 0;
        for (ll i = 0; i < M; i++)
        {
            cin >> num;
            X *= 10;
            X += num;
        }
        for (ll i = 0; i < M; i++)
        {
            cin >> num;
            Y *= 10;
            Y += num;
        }
        for (ll i = 0; i < N; i++) cin >> arr[i];

        ll cnt = 0;
        for (ll i = 0; i < N; i++)
            if (correct(i))
                cnt++;
        cout << cnt << "\n";
    }
}


감사합니다.

0개의 댓글