程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-藍橋杯帶分數有兩行不懂請教一下

c-藍橋杯帶分數有兩行不懂請教一下

編輯:編程綜合問答
藍橋杯帶分數有兩行不懂請教一下

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 為什麼是這個?謝謝各位大神

最佳回答:


原理是找到1到9的全排列,然後將一個全排列分成3部分,num1,num2,num3. num1的位數必須小於等於輸入的數的位數,所以有a <= (n + "").length(); num2的位數必須小於等於7位,所以有b<8 因為num1和num3的位數至少得有一位吧。num3就是剩下的位數所以是(b+1)~count.length .懂?

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved