#include <iostream>
using namespace std;
//1. 编程找出满足ABCD*E=DCBA的互不相同A B C D E的五个数字
//互不相同A B C D E
//purpose:bdifferent这个函数是来判断ABCD是否各不相同
bool bdifferent(int aryList[4]){
/*
这里采用了数组的方式来表示nArr[0]就代表A,nArr[1]就代表B,nArr[2]就代表C,nArr[3]就代表D
代码中用了最朴素的方式来看ABCD是否各个都不同。这里提供另一种思路,但时间复杂度高不如最朴素的
for(int i=0;i<4;i++){
int j=0;
for(j=i;j<4;j++){
if(aryList[i]==aryList[j]){
return true
}
}
}
return false
*/
if(aryList[0]==aryList[1]||aryList[0]==aryList[2]||aryList[0]==aryList[3]||aryList[1]==aryList[2]||aryList[1]==aryList[3]||aryList[2]==aryList[3]) return true;
return false;
}
//purpose:bdifferentE这个函数是来判断E是否和ABCD不相同
bool bdifferentE(int aryList[4],int nE){
//遍历输出ABCD和E相比
for(int i=0;i<4;i++){
if(aryList[i]==nE){
return true;
}
}
return false;
}
//purpose:打印ABCDE
void aryprint(int aryList[4],int nE){
cout<<"ABCDE为:"<<endl;
for(int i=0;i<4;i++){
cout<<aryList[i]<<" ";
}
cout<<nE<<endl;
}
int main()
{
int aryList[4];//创建一个数组用于存放ABCD
for(int i=1000;i<9999;i++){//循环获取全部的四位数
int y = 3;//用于方便表示数组下标arrList[3]就是表示D
int nTmp1 = i;//获取当前四位数
//purpose:这个循环用于将i去摸获取最后一位数放入数组中,然后对nTmp1除十,直到四位数都放入数组中
while(nTmp1!=0){
aryList[y]=nTmp1%10;
nTmp1/=10;
y--;
}
//purpose:判断当前数组ABCD是否各不相同,如果相同则continue进入下一个循环,不同则继续执行下面的代码
if(bdifferent(aryList)){
continue;
}
//purpose:将数字倒序放入nTmp3,nTmp3的数表示DCBA
int nTmp2 = i;
int nTmp3 = 0;
while(nTmp2!=0){
int nNum=nTmp2%10;
nTmp2/=10;
nTmp3 = nTmp3*10 + nNum;
}
//purpose:模拟ABCD*E=DCBA
for(int e=1;e<=9;e++){
if((i*e)==nTmp3){
if(bdifferentE(aryList,e)){
continue;
}
aryprint(aryList,e);
break;
}
}
}
return 0;
}
c++ 编程找出满足ABCD*E=DCBA的互不相同A B C D E的五个数字
最新推荐文章于 2024-07-22 22:46:02 发布