日期:2014-05-20  浏览次数:20640 次

编程 算法
1000!这个数中有多少个二,比如日2343541432中就有2个2

------解决方案--------------------
在java版很多算法都不用自己写
比如说这个。。。
Java code

BigInteger result = new BigInteger("1");
        for(int i = 2;i < 1001;++i){
            BigInteger temp = new BigInteger(String.valueOf(i));
            result = temp.multiply(result);
        }
        String s = result.toString();
        int count = 0;
        for(int i = 0;i < s.length();++i){
            if(s.charAt(i) == '2'){
                ++count;
            }
        }
        System.out.println(count);

------解决方案--------------------
Java code

public class Test {

    
    public static void main(String[] args) {
        System.out.println(deal());

    }
    public static String factorial(int n) { //求阶乘
        BigDecimal ans = new BigDecimal(1);
        for (int i = 1; i <= n; i++ ) {
            ans = ans.multiply(new BigDecimal(i));
        }
        return ans.toPlainString();
    }
    public static int count(String s,char x) { //差数
        int result = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == x) {
                result++;
            }
        }
        return result;
    }
    public static int deal(){
        return count(factorial(1000),'2');
    }
    
    


}