经过验算应该可以的,但放到OJ上会报以下错误:
Unhandled Exception: System.FormatException: Input string was not in the correct format at System.Int32.Parse (System.String s) [0x00000] in <filename unknown>:0 at AA1294.Program.Sum (System.String s, Int32 a) [0x00000] in <filename unknown>:0 at AA1294.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 大数相乘 { class Program { static void Main(string[] args) { string a = Console.ReadLine(); string b = Console.ReadLine(); string[] bb = new string[b.Length]; int[] aa = new int[a.Length * b.Length];//用数组表示每一位数字 for (int i = 0 ; i < b.Length; i++) { bb[b.Length - i-1] = Sum(a, int.Parse(b[i].ToString())); }//把每一位乘上 for (int i = 0; i < b.Length; i++) { if (i == 0) { for (int j = 0; j < bb[i].Length; j++) { aa[j] += int.Parse(bb[i][j].ToString()); } } else { for (int j = 0; j < bb[i].Length ; j++) { aa[j + i] += int.Parse(bb[i][j].ToString()); }//换位相加 } } for (int i = 0; i < aa.Length; i++) { while (aa[i] > 9) { aa[i + 1] += 1; aa[i] -= 10; } } int c = 0; for (int i = aa.Length - 1; i >= 0; i--) { if (aa[i] != 0) { c++; } if (c!= 0) { Console.Write(aa[i]); } } Console.ReadKey(); } public static string Sum(string s, int a) //大数乘以小数 { int[] ai = new int[s.Length + 1]; string ss = ""; for (int i = 0; i < s.Length; i++) { ai[i] = int.Parse(s[i].ToString()) * a; } for (int i = s.Length - 1; i >= 0; i--) { while (ai[i] > 9 && i > 0) { ai[i] -= 10; ai[i - 1] += 1; } } int c = 0; for (int i = ai.Length - 1; i >= 0; i--) { if (ai[i] != 0) { c++; } if (c != 0) { ss += ai[i]; } } return ss; } } }