Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace roflan
- {
- class BigInteger {
- int len;
- int[] number;
- public BigInteger(int[] num, int l) {
- this.number = num;
- this.len = l;
- }
- public BigInteger(string s) {
- this.len = s.Length;
- this.number = new int[10000];
- len = s.Length;
- for (int i = 0; i < s.Length; i++)
- number[i] = s[s.Length - 1 - i] - '0';
- }
- public void PrintNumber() {
- for (int i = len-1; i >= 0; i--)
- Console.Write(number[i] + "");
- Console.Write("\n");
- }
- public void Inc() {
- int index = 0;
- while (number[index] == 9) {
- number[index] = 0;
- index++;
- }
- number[index]++;
- }
- public void Dec() {
- int index = len - 1;
- while (number[index] == 0) {
- number[index] = 9;
- index++;
- }
- number[index]--;
- }
- public static BigInteger operator +(BigInteger n1, BigInteger n2) {
- int flag = 0;
- int i;
- int len = 0;
- int[] result = new int[10000];
- for (i = 0; i < Math.Max(n1.len, n2.len) + 1; i++) {
- result[i] = (n1.number[i] + n2.number[i] + flag) % 10;
- flag = (n1.number[i] + n2.number[i] + flag) / 10;
- }
- if (result[i] == 0) len = i - 1;
- else len = i;
- return new BigInteger(result, len);
- }
- public static bool operator >(BigInteger n1, BigInteger n2) {
- for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
- if (n1.number[i] > n2.number[i]) return true;
- if (n1.number[i] < n2.number[i]) return false;
- }
- return false;
- }
- public static bool operator <(BigInteger n1, BigInteger n2) {
- for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
- if (n1.number[i] < n2.number[i]) return true;
- if (n1.number[i] > n2.number[i]) return false;
- }
- return false;
- }
- public static bool operator >=(BigInteger n1, BigInteger n2) {
- for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
- if (n1.number[i] > n2.number[i]) return true;
- if (n1.number[i] < n2.number[i]) return false;
- }
- return true;
- }
- public static bool operator <=(BigInteger n1, BigInteger n2) {
- for (int i = Math.Max(n1.len, n2.len) - 1; i >= 0; i++) {
- if (n1.number[i] < n2.number[i]) return true;
- if (n1.number[i] > n2.number[i]) return false;
- }
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment