c++ - 如何通过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;
}
推荐阅读
- git - Git 错误,无法生成/无法分叉索引包
- npm - node.js 中的文本到 Json 转换
- c# - 如何在中继器元素中获得一个单选按钮?
- javascript - v-autocomplete on-select on-remove 在 vuetify
- javascript - 将此外部制作的表格嵌入我的网站
- mysql - 非常相似的 MySQL 查询导致查询持续时间显着不同(在时间跨度上的位置)
- php - 在mysql中自动重复数据十次
- javascript - 如何检查数据库条目(表行)是否已存在
- react-native - React Native,具有多个根应用程序,如何共享reducer数据?
- jobs - ControlM 作业参数在运行作业时不浮动