zoukankan      html  css  js  c++  java
  • c# 求一定的大阶乘

    1.通过List<int> 类型存储

    代码:

       private List<int> fact(int n)
           {
               int s = 1;
               int m = 0;
                int a,b,c;
               List<int> lstfact = new List<int>();
               List<int> lstresult = new List<int>();
               lstfact.Add(1);
               for (int i = 1; i <= n; i++)
               {
                   m = 0;
                for (int k = 0; k < lstfact.Count;k++ )
                {
                    s = i * lstfact[k];
                    s = s + m;
                    a = s / 10;
                    b = s % 10;
                    lstfact[k] = b;
                    if (a>0)
                    {
                        if (k<lstfact.Count-1)
                        {
                            m = a;
                        }
                        else
                        {
                            lstfact.Add(a);
                            break;
                        }
                    }
                    else
                    {
                        m = 0;
                    }
                   
                }
            }
               for (int k = lstfact.Count - 1; k >= 0;k-- )
               {
                   lstresult.Add(lstfact[k]);
               }
               return lstresult;
           }

    2.通过字符串存储

     private string factss(int n)
            {
                int s = 1;
                int m = 0;
                int a, b, c;
                StringBuilder strb = new StringBuilder();
                StringBuilder strfac = new StringBuilder();
                strb.Append("1");
                for (int i = 1; i <= n; i++)
                {
                    m = 0;
                    for (int k =0; k<strb.Length; k++)
                    {
                        s = i * int.Parse(strb[k].ToString());
                        s = s + m;
                        a = s / 10;
                        b = s % 10;
                        strb[k] =Convert.ToChar(b.ToString());
                        if (a > 0)
                        {
                            if (k < strb.Length - 1)
                            {
                                m = a;
                            }
                            else
                            {
                                strb.Append(a);
                                break;
                            }
                        }
                        else
                        {
                            m = 0;
                        }

                    }
                }
                for (int k =strb.Length-1; k >= 0; k--)
                {
                    strfac.Append(strb[k]);
                }
                return strfac.ToString();
            }

  • 相关阅读:
    【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机 贪心
    【poj2104】K-th Number 主席树
    【bzoj3772】精神污染 STL+LCA+主席树
    【bzoj3932】[CQOI2015]任务查询系统 离散化+主席树
    【bzoj3545/bzoj3551】[ONTAK2010]Peaks/加强版 Kruskal+树上倍增+Dfs序+主席树
    【bzoj3524】[Poi2014]Couriers 主席树
    【bzoj2223】[Coci 2009]PATULJCI 主席树
    【bzoj2588】Spoj 10628. Count on a tree 离散化+主席树
    【bzoj1901】Zju2112 Dynamic Rankings 离散化+主席树+树状数组
    【bzoj1552】[Cerc2007]robotic sort Splay
  • 原文地址:https://www.cnblogs.com/jinyuttt/p/2296496.html
Copyright © 2011-2022 走看看