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

解决方案 »

  1.   

    在java版很多算法都不用自己写
    比如说这个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);
    248
      

  2.   


    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');
    }


    }