プログラミングは1つの9ビットの整数を求めて、数字は1-9から構成して、すべての数字は1回しか現れません.そしてこの整数の前位は1で割り切れる、前二位は2で割り切れる、…というように、前九位は9で割り切れる.
1497 ワード
構想分析:9ビットの整数は、繰り返さない1~9からなり、0がないことに注意して分析する.
各数字は1回しか現れず、最小数は123456789で、最大数は987654321です.
重複しない以上、1人ずつ取得し、9つの数字を比較すればよい.どのように比較して、9つの数字はa!=b&&a!=c......だめだ、
取得した数字を配列に入れ,バブルソート法により数字が重複しているかどうかを比較すればよい.バブルソートはソートにしか使えないとは言わないが...
コードを改良すれば使えます.
0ではなく、数字が異なる2つの条件が満たされた後、判断を続けます.
1サイクルで上位2位が2で除かれ,上位3位が3で除かれ,......,上位9位が9で除かれたと判断する.条件が出力を満たし、終了します.
答え:381654729
詳細コードは次のとおりです.
各数字は1回しか現れず、最小数は123456789で、最大数は987654321です.
重複しない以上、1人ずつ取得し、9つの数字を比較すればよい.どのように比較して、9つの数字はa!=b&&a!=c......だめだ、
取得した数字を配列に入れ,バブルソート法により数字が重複しているかどうかを比較すればよい.バブルソートはソートにしか使えないとは言わないが...
コードを改良すれば使えます.
0ではなく、数字が異なる2つの条件が満たされた後、判断を続けます.
1サイクルで上位2位が2で除かれ,上位3位が3で除かれ,......,上位9位が9で除かれたと判断する.条件が出力を満たし、終了します.
答え:381654729
詳細コードは次のとおりです.
public class testLargeNumber {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] wei = new int[9]; //
int flag;
int i, num,cnt=0,n,sum=0;// 0
for (i = 123456789; i <= 987654321; i++) {
num = i; // num, i, , !
flag = 0;//
//
for (int j = 0; j < 9; j++) {
wei[j] = num % 10;
// System.out.println(wei[j]);
num = num / 10;
}
// 0
for (int k = 0; k < 9; k++) {
if (wei[k] == 0) {
flag = 1;
break;
}
for (int m = k + 1; m < 9; m++) {
if (wei[k] == wei[m]) {
flag = 1;
break;//
}
}
if(flag==1){
break;//
}
}
// 0 ,
if (flag == 0) {
cnt=0;// 0
sum=wei[8];
for(n=8;n>=1;n--){
sum=sum*10+wei[n-1];
if(sum%(10-n)==0){
cnt++; //
}
}
if(cnt==8){// 2 2 9 9 8
System.out.println(i); // i , num
}
}
}
// System.out.println(cnt);
}
}