Advertisement
OIQ

Untitled

OIQ
Sep 12th, 2020
132
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace roflan
  6. {
  7.     class BigInteger {
  8.         int len;
  9.         int[] number;
  10.         public BigInteger(int[] num, int l) {
  11.             this.number = num;
  12.             this.len = l;
  13.         }
  14.         public BigInteger(string s) {
  15.             this.len = s.Length;
  16.             this.number = new int[10000];
  17.             len = s.Length;
  18.             for (int i = 0; i < s.Length; i++)
  19.                 number[i] = s[s.Length - 1 - i] - '0';
  20.         }
  21.  
  22.         public void PrintNumber() {
  23.             for (int i = len-1; i >= 0; i--)
  24.                 Console.Write(number[i] + "");
  25.             Console.Write("\n");
  26.         }
  27.         public void Inc() {
  28.             int index = 0;
  29.             while (number[index] == 9) {
  30.                 number[index] = 0;
  31.                 index++;
  32.             }
  33.             number[index]++;
  34.         }
  35.         public void Dec() {
  36.             int index = len - 1;
  37.             while (number[index] == 0) {
  38.                 number[index] = 9;
  39.                 index++;
  40.             }
  41.             number[index]--;
  42.         }
  43.  
  44.         public static BigInteger operator +(BigInteger n1, BigInteger n2) {
  45.             int flag = 0;
  46.             int i;
  47.             int len = 0;
  48.             int[] result = new int[10000];
  49.             for (i = 0; i < Math.Max(n1.len, n2.len) + 1; i++) {
  50.                 result[i] = (n1.number[i] + n2.number[i] + flag) % 10;
  51.                 flag = (n1.number[i] + n2.number[i] + flag) / 10;
  52.             }
  53.             if (result[i] == 0) len = i - 1;
  54.             else len = i;
  55.             return new BigInteger(result, len);
  56.         }
  57.         public static bool operator >(BigInteger n1, BigInteger n2) {
  58.             for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
  59.                 if (n1.number[i] > n2.number[i]) return true;
  60.                 if (n1.number[i] < n2.number[i]) return false;
  61.             }
  62.             return false;
  63.         }
  64.         public static bool operator <(BigInteger n1, BigInteger n2) {
  65.             for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
  66.                 if (n1.number[i] < n2.number[i]) return true;
  67.                 if (n1.number[i] > n2.number[i]) return false;
  68.             }
  69.             return false;
  70.         }
  71.         public static bool operator >=(BigInteger n1, BigInteger n2) {
  72.             for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
  73.                 if (n1.number[i] > n2.number[i]) return true;
  74.                 if (n1.number[i] < n2.number[i]) return false;
  75.             }
  76.             return true;
  77.         }
  78.         public static bool operator <=(BigInteger n1, BigInteger n2) {
  79.             for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
  80.                 if (n1.number[i] < n2.number[i]) return true;
  81.                 if (n1.number[i] > n2.number[i]) return false;
  82.             }
  83.             return true;
  84.         }
  85.     }
  86. }
  87.  
Advertisement
RAW Paste Data Copied
Advertisement