#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1=0;
int num2=0;
scanf("%d%d",&num1,&num2);
int i=0;
for(i=num1;i<=num2;i++)
{
int a=i/1000;
int b=i/100%10;
int c=i/10%10;
int d=i%10;
if (a == 0 || b == 0 || c == 0 || d == 0)
{
continue;
}
if((a>b)&&(b>c)&&(c>d)&&(a%b!=0)&&(b%c!=0)&&(c%d!=0))
{
if((a%2==0)&&(b%2==0)&&(c%2==0)&&(d%2==0))
{
continue;
}
else if((a%2!=0)&&(b%2!=0)&&(c%2!=0)&&(d%2!=0))
{
continue;
}
else
{
printf("%d\n",i);
}
}
}
return 0;
}
暴力求解就行,只要满足条件的就记录上。
代码:
int m=5000,n=7000;
vector<int> ans;
for(int i=m;i<=n;++i)
{
int val=i;
vector<int> res;
while(val)
{
res.push_back(val%10);
val/=10;
}
bool isTrue=true;
for(int j=res.size()-2;j>=0;--j)
{
if(res[j]>=res[j+1])
{
isTrue=false;
break;
}
if(res[j]==0)
{
isTrue=false;
break;
}
if(res[j+1]%res[j]==0)
{
isTrue=false;
break;
}
}
if(!isTrue)
continue;
bool isOdd=true;
bool isEven=true;
for(int j=res.size()-1;j>=0;--j)
{
if(res[j]%2==0)
{
isEven=false;
}
if(res[j]%2!=0)
{
isOdd=false;
}
}
if(!isOdd&&!isEven)
{
ans.push_back(i);
}
}
for(int i=0;i<ans.size();++i)
{
cout<<ans[i]<<endl;
}
return 0;