如何用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;
}
我试图从范围 (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;
}