计算满足下述条件的四位数的个数:c++
发布网友
发布时间:2024-10-15 21:58
我来回答
共4个回答
热心网友
时间:2024-11-05 14:41
#include <iostream>
using namespace std;
// 判断输入的2位整数n是偶数且能被n(为1~9的整数)整除,且十位数字不为零
bool JudgeNumberAC(int n);
// 判断输入的2位整数n为奇数且十位数字不为0
bool JudgeNumberDB(int n);
// 判断输入的4位整数n是否满足题目要求的条件
bool JudgeFourDigitNumber(int n);
// 统计low ~ high 范围满足条件的四位数字的个数
int CountSatisfyDigitFour(int low, int high);
// 交换两个整数的辅助函数
void Swap(int *low, int *high);
int main(void)
{
int count;
count = CountSatisfyDigitFour(1000,9999);
cout<< "\n满足条件的四位数字的个数为: "<<count<<endl<<endl;
return 0;
}
// 判断输入的2位整数n是偶数且能被n(为1~9的整数)整除,且十位数字不为零
bool JudgeNumberAC(int n)
{
if(n%2 !=0) // 判断是否为偶数
return false;
if (n/10 == 0) // 判断十位数字不为零
return false;
bool isDivisionAll = true;
for(int i=1; i<=9; i++) // 判断是否能被n(n为 1~ 9的整数
{
if (n%i !=0) // 有一个不满足条件
{
isDivisionAll = false;
break;
}
}
return isDivisionAll == true ? true: false;
}
// 判断输入的2位整数n为奇数且十位数字不为0
bool JudgeNumberDB(int n)
{
if(n%2 == 0) // 判断是否是奇数
return false;
if(n/10 == 0) // 判断十位数字不为0
return false;
return true;
}
// 判断输入的4位数字是否满足题目要求的条件
bool JudgeFourDigitNumber(int n)
{
int ac = n/1000*10 + n%100/10;
int db = n%10*10 +n%1000/100;
if(ac > db && JudgeNumberDB(db) && JudgeNumberAC(ac))
{
return true;
}
return false;
}
// 交换两个整数的辅助函数
void Swap(int *low, int *high)
{
int tmp = *low;
*low = *high;
*high = tmp;
}
// 统计low ~ high 范围满足条件的四位数字的个数
int CountSatisfyDigitFour(int low, int high)
{
int count = 0;
if(low > high) // 确保 low < high
Swap(&low, &high);
for(int i = low; i<=high; i++)
{
if( JudgeFourDigitNumber(i))
{
count++;
cout<<i<<" ";
}
}
return count;
}
热心网友
时间:2024-11-05 14:42
#include<iostream>
using namespace std;
int isdiv(int n)
{
for(int i=1;i<=9;i++)
if(n%i==0)
return 1;
return 0;
}
void main()
{
int ac,db;
for(int n=1000;n<10000;n++)
{
ac=n/1000*10+n%100/10;
db=n%10*10+n%1000/100;
if(ac/10>db/10 && ac%2==0 && db%2&& isdiv(ac) && ac/10 && db/10)
cout<<n<<" ";
}
cout<<endl;
}
热心网友
时间:2024-11-05 14:42
ac必须是偶数且能被n(n为1~9的整数)整除,这样的两位十六进制数是不存在的,更别说十进制了。个数为零。
热心网友
时间:2024-11-05 14:43
你是需要1000到9999所有满足条件的值吗?