一个四位正整数,满足如下条件:
由数字1到数字9组成;各位数字都不相同;
从左至右数字降序排列;
并且相邻的两个数字前一个不能是后一个的倍数;
并且这4位数字不能都是奇数,也不能都是偶数。
编程输入两个4位整数a和b,输出区间[a,b]之间符合上述条件的所有数。
输入样例:
5000 7000
输出样例:
5432
6432
6532
6543
#include
int main() {
int a,b,c,d;
int m,n;
scanf("%d %d",&m,&n);
if(m>1000&&n>5000&&mif(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
if(a%b!=0&&b%c!=0&&c%d!=0)
if((a%2==0&&b%2==0&&c%2==0&&d%2==0)||(a%2!=0&&b%2!=0&&c%2!=0&&d%2!=0)) {
} else {
int num=a*1000+b*100+c*10+b;
if(num>m&&num"%d%d%d%d\n",a,b,c,d);
}
}
return 0;
}
以下链接提供了一个解法,你试试
https://blog.csdn.net/m0_64782700/article/details/123115949
一看你代码就知道思路有大问题了
让你输出mn之间的数,那你要从m循环到n,然后分解i,分解出4个数abcd,再做上面的一堆判断
你这写了个4重循环,是怎么保证abcd在m和n之间的,你到最后才判断在mn之间不超时吗
还有,d为什么只能从2开始,1就不行吗,不能是0吗
还有,你的三重if是嵌套的,而最后的else也是嵌套在第三层的if里面的,这逻辑能对才怪