zoukankan      html  css  js  c++  java
  • 华为机试 可怕的N阶乘

    题目标题:

    • 计算阶乘n!是一件可怕的事情,因为当n并不是很大时,n!将是一个很大的值。例如13! = 6227020800,已经超过了我们常用的unsigned int类型的取值范围。请设计一个程序,使其可以计算100以内的数的阶乘,结果用字符串的形式输出

    思路: 此题类此大整数相乘,循环相乘,以字符串的形式输出。。。大整数相乘用的是普通循环方式,不是基于分治的乘法

    public class jiecheng4741 {
    
        public static String LongMulti(String s1,String s2){
            String result="";
            int n1=s1.length(),n2=s2.length();
            int re[] = new int[n1+n2];
            int jin=0;
            int p=0;
            int count=re.length-1;
            for(int i=s2.length()-1;i>=0;i--){
                p=count--;
                for(int j=s1.length()-1;j>=0;j--){
                    int temp = re[p]+(s2.charAt(i)-'0')*(s1.charAt(j)-'0')+jin;
                    re[p]=temp%10;
                    p--;
                    jin = temp/10;
                }
                while(jin!=0){
                    int temp=re[p]+jin;
                    re[p]=temp%10;
                    p--;
                    jin=temp/10;
                }
                
            }
            boolean f=true;
            for(int k=0;k<re.length;k++){
                if(f&&re[k]==0) {
                }
                else{
                    f=false;
                    result=result+re[k];
                }
            }
            return result;
        }
        public static String jiecheng(int n){
            if(n==0) return "1";
            String re="1";
            for(int i=1;i<=n;i++){
                
                re=LongMulti(re,i+"");
                
            }
            return re;
        }
        public static void main(String[] args) {
            int n=5;
            
            System.out.println(jiecheng(13));
    //        String s1="999";
    //        String s2="9899";
    //        System.out.println(999*9899);
    //        System.out.println(LongMulti(s1,s2));
        }
    
    }
  • 相关阅读:
    hdu 1426(DFS+坑爹的输入输出)
    hdu 1430(BFS+康托展开+映射+输出路径)
    hdu 1664(数论+同余搜索+记录路径)
    BestCoder Round #86 二,三题题解(尺取法)
    hdu 1226(同余搜索)
    poj 1426(同余搜索)
    poj 2251(同余)
    hdu 1044(bfs+dfs+剪枝)
    hdu 1455(DFS+好题+经典)
    安装centos7后不能联网
  • 原文地址:https://www.cnblogs.com/todayjust/p/5345374.html
Copyright © 2011-2022 走看看