C语言关于特定条件的4位数

img


这题目应该肿么写呢?这道题目我不会写,应该该怎么做呢?这道题目我不会我不会啊!啊!


#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;
}

暴力求解就行,只要满足条件的就记录上。

img

代码:

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;