如何用C++消除一个系列中的某些数字?

How to eliminate certain numbers in a series by C++?

我试图从范围 (170-2500) 中消除一些数字,然后计算消除后的剩余数字。由数字列表 (2,5,6,7) 中的 3 位数字组成的数字。我曾尝试使用 Cartesian Product 来生成数字,但我对如何从范围中消除数字感到困惑。笛卡尔积代码是从geeksforgeeks获得的。我知道如何计算剩余的数字,但我对将被淘汰的数字感到困惑。

void findCart(int arr1[], int n) 
{ 
    for (int i = 0; i < n; i++) 
        for (int j = 0; j < n; j++) 
            for (int k = 0; k < n; k++) 
                printf("{%d%d%d}, ", arr1[i], arr1[j], arr1[k]);
} 

int main() 
{ 
    min=170;
    max=2500;
    int arr1[] = {2,5,6,7};
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    findCart(arr1, n1, number);

    int count=0;
    if (number>=min && number<=max){
        count++;
    }

    int total=max-min+1;
    int result=total-count;
    cout<<result;

    return 0; 
} 

不确定我是否理解你的问题,但从你的代码来看,我认为你正在尝试这样做:从数字列表中创建一个整数,然后检查它是否是从最小值到最大值,然后打印剩余的数字在范围内。 试试这段代码,希望你能理解我的想法:

// return total number which are meet conditions
int findCart(int arr1[], int n, int min, int max) 
{
    int totalNumbers = 0;
    int number = 0;
    for (int i = 0; i < n; i++) 
        for (int j = 0; j < n; j++) 
            for (int k = 0; k < n; k++){ 
                number = arr1[i]*100 + arr1[j]*10 + arr1[k];
                if ( number >= min && number <= max )
                    ++totalNumbers;
            }

    return totalNumbers;
} 

int main() 
{ 
    int min=170;
    int max=2500;
    int arr1[] = {2,5,6,7};
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    int totalNumberFound = findCart(arr1, n1, min, max);

    int total=max-min+1;
    int result=total- totalNumberFound;
    cout<<result;

    return 0; 
}