开发者社区> 问答> 正文

蓝桥杯带分数有两行不懂请教一下

package abc;
import java.util.Scanner;
public class abc {

public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int k=0;
for(int a1=1;a1<10;a1++)
{
for(int a2=1;a2<10;a2++)
{
if(a1!=a2)
{
for(int a3=1;a3<10;a3++)
{
if(a1!=a3 && a2!=a3)
{
for(int a4=1;a4<10;a4++)
{
if(a1!=a4 && a2!=a4 && a3!=a4)
{
for(int a5=1;a5<10;a5++)
{
if(a1!=a5 && a2!=a5 && a3!=a5 && a4!=a5)
{
for(int a6=1;a6<10;a6++)
{
if(a1!=a6 && a2!=a6 && a3!=a6 && a4!=a6 && a5!=a6)
{
for(int a7=1;a7<10;a7++)
{
if(a1!=a7 && a2!=a7 && a3!=a7 && a4!=a7 && a5!=a7 && a6!=a7)
{
for(int a8=1;a8<10;a8++)
{
if(a1!=a8 && a2!=a8 && a3!=a8 && a4!=a8 && a5!=a8 && a6!=a8 && a7!=a8)
{
for(int a9=1;a9<10;a9++)
{
if(a1!=a9 && a2!=a9 && a3!=a9 && a4!=a9 && a5!=a9 && a6!=a9 && a7!=a9 && a8!=a9)
{
int[] count={a1,a2,a3,a4,a5,a6,a7,a8,a9};
double num1=0;
for(int a=0;a<=(n+"").length();a++)
{
num1=num1*10+count[a];
if(num1<n)
{
double num2=0;
for(int b=a+1;b<8;b++)
{
num2=num2*10+count[b];
double num3=0;
for(int c=b+1;c<count.length;c++)
{
num3=num3*10+count[c];
}
if(n==num1+num2/num3)
{
System.out.println((int)num1+"+"+(int)num2+"/"+(int)num3);
k++;
}
}
}
}

}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
System.out.println(k);
}
}
这个是其中一种答案,大致容易懂,请问各位大神。num2那里<8,8是哪里来的,还有num3的<count.length 为什么是这个?谢谢各位大神

展开
收起
a123456678 2016-03-20 10:45:20 2032 0
1 条回答
写回答
取消 提交回答
  • 原理是找到1到9的全排列,然后将一个全排列分成3部分,num1,num2,num3. num1的位数必须小于等于输入的数的位数,所以有a <= (n + "").length(); num2的位数必须小于等于7位,所以有b<8 因为num1和num3的位数至少得有一位吧。num3就是剩下的位数所以是(b+1)~count.length .懂

    2019-07-17 19:08:57
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载