안녕하세요. 오늘은 돌림판을 돌릴 거예요.
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";
}
}
감사합니다.