パッケージcom.xiaozhao.coding;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;
パブリッククラスGetNarcissisticNumbers {
@SuppressWarnings( "resource")
public static void main(String [] args){ List <Integer> list1 = new ArrayList <Integer>(); Scanner Scanner = new Scanner(System.in); System.out.println( "パワーからクエリする必要がある範囲を入力してください(たとえば、100 --- n、デフォルトの開始位置は100): "); int n = scanner.nextInt(); for(int i = 100; i <= n ; i ++){ getNarcissisticNumbers(i); if(getNarcissisticNumbers(i)== i) list1.add(getNarcissisticNumbers(i)); } System.out.println( "この範囲では、クエリするべき数は次のとおりです。" + "\ n" + list1); } public static int GetCount(int n){ //何桁のnであるかを決定する int s = n / 10;
int count = 1;
while(s> 0){ s = s / 10; count ++; } return count; } public static int sum(int n、int k){ //各数値のカウント順を見つける int sum = 1; final int h = n; for(int i = 0; i <h; i ++){ sum = sum * k; } return sum; } public static int jiechen(int k){ //各数値に必要なもの除算の階乗(10) int num = 1; while(k> 0){ num = 10 * num; k--; } return num; }
public static int Getvalue(int n){ // int value = 0; int q = 1; int a = GetCount(n)-1; //System.out.println(a); while( a> 0){ q = 10 * q; a--; } value = n / q; //System.out.println(value); return value; } public static int getNarcissisticNumbers(int n){ //パスに戻るパワー変更後の数 List <Integer> list = new ArrayList <Integer>(); int k = GetCount(n); //System.out.println(k); for(int i = 1; i <2; i ++){
list.add(sum(k、Getvalue(n)));
for(int j = k-1; j> 0; j--){ n = n%jiechen(j); GetCount(n); list.add(sum(k、Getvalue(n))); } } ListIterator <Integer> it = list.listIterator(); int sum2 = 0; while(it.hasNext()){ int sum1 = it.next(); sum2 = sum2 + sum1; } //System.out.println(sum2); sum2を返します。 } }