Write a C# program to given two non-negative integers n1 and n2 represented as string, return the string represented product of n1 and n2

  • برمجة سي شارب
  • برمجة

Write a C# program to given two non-negative integers n1 and n2 represented as string, return the string represented product of n1 and n2. 
Expected Output:
Non-negative integer1(string) = 12, Non-negative integer2(string) = 5
Product = 60
Non-negative integer1(string) = 221, Non-negative integer2(string) = 415
Product = 91715
Non-negative integer1(string) = 0, Non-negative integer2(string) = 15
Product = 0

الأجوبة

using System;
using System.Text;
namespace exercises {
  class Program {
    static void Main(string[] args) {
      string ns1, ns2;
      ns1 = "12";
	  ns2 = "5";
      Console.WriteLine("Non-negative integer1(string) = " + ns1 + ", Non-negative integer2(string) = " + ns2);
      Console.WriteLine("Product = "+ str_num_multiply(ns1, ns2));
      ns1 = "221";
	  ns2 = "415";	  
      Console.WriteLine("Non-negative integer1(string) = " + ns1 + ", Non-negative integer2(string) = " + ns2);
      Console.WriteLine("Product = "+ str_num_multiply(ns1, ns2));
      ns1 = "0";
	  ns2 = "15";	  
	  Console.WriteLine("Non-negative integer1(string) = " + ns1 + ", Non-negative integer2(string) = " + ns2);
      Console.WriteLine("Product = "+ str_num_multiply(ns1, ns2));
      }
      public static string str_num_multiply(string ns1, string ns2)
        {
            if (ns1 == "0" || ns2 == "0") { return "0"; }
            var max_pos_num = 1000000000;
            var max_pos_num_len = 9;
            var num1Value = new long[ns1.Length / max_pos_num_len + 1];
            var num2Value = new long[ns2.Length / max_pos_num_len + 1];
            int i, j, temp, num, idx = 0;
            for (i = ns1.Length; i > 0; i -= max_pos_num_len)
            {
                num = 0;
                temp = i > max_pos_num_len ? i - max_pos_num_len : 0;
                for (j = temp; j < i; j++)
                {
                    num = num * 10 + (ns1[j] - '0');
                }
                num1Value[idx++] = num;
            }
            idx = 0;
            for (i = ns2.Length; i > 0; i -= max_pos_num_len)
            {
                num = 0;
                temp = i > max_pos_num_len ? i - max_pos_num_len : 0;
                for (j = temp; j < i; j++)
                {
                    num = num * 10 + (ns2[j] - '0');
                }
                num2Value[idx++] = num;
            }
            var result_val = new long[num1Value.Length + num2Value.Length];
            for (i = 0; i < num1Value.Length; i++)
            {
                for (j = 0; j < num2Value.Length; j++)
                {
                    result_val[i + j] += num1Value[i] * num2Value[j];
                    if (result_val[i + j] >= max_pos_num)
                    {
                        result_val[i + j + 1] += result_val[i + j] / max_pos_num;
                        result_val[i + j] = result_val[i + j] % max_pos_num;
                    }
                }
            }
            var result = new StringBuilder();
            var tempStr = string.Empty;
            var flag = false;
            for (i = result_val.Length - 1; i >= 0; i--)
            {
                if (result_val[i] != 0)
                {
                    tempStr = result_val[i].ToString();
                    if (flag)
                    {
                        result.Append('0', 9 - tempStr.Length);
                    }
                    result.Append(result_val[i].ToString());
                    flag = true;
                }
            }
            return result.ToString();
        }
    }
}
هل كان المحتوى مفيد؟

تبحث عن مدرس اونلاين؟

محتاج مساعدة باختيار المدرس الافضل؟ تواصل مع فريقنا الان لمساعدتك بتأمين افضل مدرس
ماهو التخصص الذي تبحث عنه؟
اكتب هنا...