#include<iostream>
#include<vector>
#include<string.h>
#include<math.h>
using namespace std;
int number[9];
bool sel[9];
vector<long long>V;
vector<long long>result;
int num = 0;//주어진 자연수의 개수
int mul = 0;//피승수
int answer = 0;
int rangel, rangeh;//범위
void calculate(vector<long long> v) {
long long res = 0;
for (int i = 0; i < v.size(); i++) {
long long k = pow(mul, i);
res = res + k * v[i];
}
res = res % 1013;
result.push_back(res);
}
int check(vector<long long> v) {
for (int i = 0; i < v.size(); i++) {
if (v[i] >= rangel && v[i] <= rangeh) {
answer++;
}
}
return answer;
}
void dfs(int depth) {
if (depth == num) {
calculate(V);
return;
}
for (int i = 0; i < num; i++) {
if (sel[i] == true)continue;
sel[i] = true;
V.push_back(number[i]);
dfs(depth + 1);
V.pop_back();
sel[i] = false;
}
}
int main() {
int T;
cin >> T;
for (int i = 0; i < T; i++) {
memset(number, 0, sizeof(number));
cin >> num;
for (int j = 0; j < num; j++) {
cin >> number[j];
}
cin >> rangel >> rangeh >> mul;//범위 두개, 수열 r
dfs(0);
cout<<check(result)<<endl;
V.clear();
result.clear();
answer = 0;
}
}
#2 ; 계획 쇼핑 : 미완성
'Computer Science > 알고리즘(백준+프로그래머스)' 카테고리의 다른 글
프로그래머스 Level 2- 소수찾기(완전탐색) (0) | 2021.10.30 |
---|---|
프로그래머스 Level 1 : 모의고사(완전탐색) (0) | 2021.10.30 |
문제해결기법 3주차) 움직이는 하노이의 탑 (0) | 2020.04.05 |
[문제해결기법 2주차] Error (0) | 2020.04.05 |
[문제해결 기법 1주차] 과소비 알람 (0) | 2020.04.01 |