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));
        }
    
    }
  • 相关阅读:
    PHP 计算程序运行的时间
    PHP 简易版生成随机码
    PHP读取FLASH 文件信息
    MongoDB基本使用
    PHP实现QQ达人信息抓取
    bjtuOJ 1188 素数筛选
    bjtuOJ 1139 Longest Common Subsequence
    BJTU1113扫雷问题
    C#线程池的使用详解
    C#域名解析的简单制作
  • 原文地址:https://www.cnblogs.com/todayjust/p/5345374.html
Copyright © 2011-2022 走看看