예제 #1
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static Big Mul(Big big1, Big big2)
 {
     return(new Big()
     {
         Neg = big1.Neg != big2.Neg, Num = Mul(big1.Num, big2.Num)
     });
 }
예제 #2
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static Big Mul(Big big, int k)
 {
     return(new Big()
     {
         Neg = big.Neg != (k < 0), Num = Mul(big.Num, Math.Abs(k))
     });
 }
예제 #3
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static Big Power(Big big, int k)
 {
     return(new Big()
     {
         Neg = big.Neg && (k % 2 != 0), Num = Power(big.Num, k)
     });
 }
예제 #4
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static Big Quotient(Big big, int k)
 {
     return(new Big()
     {
         Neg = big.Neg != (k < 0), Num = Quotient(big.Num, Math.Abs(k))
     });
 }
예제 #5
0
파일: Big.cs 프로젝트: abundrew/algorithms
        static Big AddSub(Big big1, Big big2, bool add)
        {
            if (add)
            {
                return new Big()
                       {
                           Neg = big1.Neg, Num = Big.Sum(big1.Num, big2.Num)
                       }
            }
            ;
            else
            {
                int cmp = Big.Compare(big1.Num, big2.Num);

                switch (cmp)
                {
                case -1:
                    return(new Big()
                    {
                        Neg = !big1.Neg, Num = Big.Dif(big2.Num, big1.Num)
                    });

                case 1:
                    return(new Big()
                    {
                        Neg = big1.Neg, Num = Big.Dif(big1.Num, big2.Num)
                    });
                }
                return(new Big(0));
            }
        }
예제 #6
0
파일: Big.cs 프로젝트: abundrew/algorithms
        public static Big Fact(int n)
        {
            Big big = new Big(1);

            for (int i = 2; i <= n; i++)
            {
                big = Mul(big, i);
            }
            return(big);
        }
예제 #7
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static int Compare(Big big1, Big big2)
 {
     if (big1.Neg != big2.Neg)
     {
         return(big1.Neg ? -1 : 1);
     }
     if (big1.Neg)
     {
         return(Compare(big2.Num, big1.Num));
     }
     return(Compare(big1.Num, big2.Num));
 }
예제 #8
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public Big(Big big)
 {
     Neg = big.Neg;
     Num = new List <int>(big.Num);
 }
예제 #9
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static int Remainder(Big big, int k)
 {
     return(Remainder(big.Num, Math.Abs(k)));
 }
예제 #10
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public static Big Sub(Big big1, Big big2)
 {
     return(AddSub(big1, big2, big1.Neg != big2.Neg));
 }
예제 #11
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public Big Mul(Big big)
 {
     return(Mul(this, big));
 }
예제 #12
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public Big Sub(Big big)
 {
     return(Sub(this, big));
 }
예제 #13
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public Big Add(Big big)
 {
     return(Add(this, big));
 }
예제 #14
0
파일: Big.cs 프로젝트: abundrew/algorithms
 public int CompareTo(Big big)
 {
     return(Compare(this, big));
 }