Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _400800|400
- 400 |----
- --- |1002
- _800
- 800
- ---
- 0
- class Class1
- {
- public readonly Class1 son;
- public readonly string num1;
- public readonly string num2;
- public readonly int space_num1;
- public readonly int space_num2;
- public Class1(int dividend, int divider, int space = 0)
- {
- if (divider <= 0) throw new ArgumentException();
- num1 = dividend.ToString();
- space_num1 = space;
- if (divider> dividend)
- {
- space_num2 = num1.Length-1 + space;
- num2 = "0";
- }
- //код ниже может быть и проще, но пока не вижу как
- int res = dividend / divider;
- int i = 0;
- while (res > 9)
- {
- res = res / 10;
- i++;
- }
- int delta = res * divider;
- num2 = delta.ToString();
- space_num2 = space;
- if (i > 0) //остаток все еще больше делителя
- {
- int newDividend = dividend - delta* MyPow(10,i);
- int spaceDelta = num1.Length - newDividend.ToString().Length;
- son = new Class1(newDividend, divider, space + spaceDelta);
- }
- //int space_num2 = num1.Length;
- }
- static int MyPow(int x, int y)
- {
- if (y < 1) throw new ArgumentException();
- int res = 1;
- for(int i = 0; i < y; i++)
- {
- res *= x;
- }
- return res;
- }
- }
- var c = new Class1(400800, 400); //(400800, 400, 1) чтобы удобно вставлять '_'
Add Comment
Please, Sign In to add comment