unity3d 1-100 阶乘的精准大数

using System;
using System.Text;

namespace ConsoleApplication1
{
    internal class Program
    {
        public static void Main(string[] args)
        {
            var result = "1";
            for (var i = 2; i < 101; i++)
            {
                result = GetResult(result, i.ToString());
            }
            Console.WriteLine(result.Length);
            Console.WriteLine(result);
        }

        private static string GetResult(string s1, string s2)
        {
            var lastResult = "";
            var ten1 = -1;
            var result = new int[s1.Length + s2.Length]; //用以记录计算结果
            for (var i = s1.Length - 1; i >= 0; i--)
            {
                int c1 = Convert.ToInt16(s1[i].ToString()); //从s1中从后往a前取一个数并记录这个数的位置
                ten1++;
                var resultindex = result.Length - 1 - ten1;
                for (var j = s2.Length - 1; j >= 0; j--)
                {
                    int c2 = Convert.ToInt16(s2[j].ToString()); //从?s2中从后往前取一个数
                    var cc = c1*c2 + result[resultindex];
                    if (cc > 10)
                    {
                        result[resultindex] = cc%10;
                        var lastindex = resultindex - 1; //往前移动一位
                        var lastvalue = result[lastindex] + cc/10; //把刚刚得到的十位的数字赋值到前面
                        while (cc > 10)
                        {
                            cc = result[lastindex] + cc/10;
                            result[lastindex] = cc%10;
                            lastindex--; //进位
                        }
                    }
                    else
                    {
                        result[resultindex] = cc;
                    }
                    resultindex--; //进位
                }
            }
            var sb = new StringBuilder();
            foreach (var item in result)
            {
                sb.Append(item);
            }
            lastResult = sb.ToString();
            if (lastResult[0] == '0')
            {
                lastResult = lastResult.Substring(1);
            }
            return lastResult;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容