zoukankan      html  css  js  c++  java
  • 【练习题】HDU 2212 DFS

    求 [1, 2147483647] 内所有,每位上的数字的阶乘和等于本身的数,如:145 = 1!+4!+5!

    最近手生找点题做,上来有点蒙,简单题暴力解应该就行,但是需要理清思路

    1. 直接暴力数字很大肯定爆掉
    2. 1~9的阶乘,提前算好存一下
    3. 9的阶乘362880,9999999999的阶乘和为3628800,所以可以考虑缩减暴力范围
      (这点其实应该在第一次写完看到答案之后发现,解只有4个,都很小)
    /**
     * HDU 2212 DFS
     * 注:杭电Java提交需要类名改为Main
     */
    class DFSNumber {
    
    	/*阶乘*/
    	public static int factorial (int num) {
    		int result = 1;
    		while(num > 0) {
    			result *= num;
    			num--;
    		};
    		return result;
    	}
    
    	/*各一位数的阶乘*/
    	public static int[] singleFactorial() {
    		int num = 0;
    		int[] factorials = new int[10];
    		while (num < 10) {
    			factorials[num] = factorial(num);
    			num++;
    		}
    		return factorials;
    	}
    
    	public static void main(String[] args) {
    		int[] factorials = new int[10];	//各一位数的阶乘
    		factorials = singleFactorial();
    
    		int n, sum;
    		for (int i = 1; i < 9999999; i++) {
    			n = i;
    			sum = 0;
    			while (n > 0) {
    				sum += factorials[n%10];
    				n /= 10;
    			}
    			if (sum == i) {
    				System.out.println(i);
    			}
    		}
    	}
    }
    
  • 相关阅读:
    【学习篇】JavaScript可折叠区域
    hdu 2201 (简单数学概率)
    hdu 2552 (这题很强大)
    hdu 2212 (简单数学)
    hdu 2124 (赤裸裸的贪心)
    hdu 2570 (贪心)
    hdu 2401 (简单数学)
    hdu 2537(水)
    hdu4432
    hdu 1181 (搜索BFS,深搜DFS,并查集)
  • 原文地址:https://www.cnblogs.com/Locked-J/p/7109652.html
Copyright © 2011-2022 走看看