C#大数相乘问题,用三个数组来存储

问题描述

C#大数相乘问题,用三个数组来存储

最好用分治法解决问题,然后能够运算20位左右的大数相乘,控制台和窗口都行

解决方案

http://blog.csdn.net/xianfajushi/article/details/49555767

解决方案二:

比较难写你再给你个思路吧,你完善下。

``` public class dashucheng
{
public string cs;//乘数
public string bcs;//被乘数
public string cheng()//乘操作返回字符串
{
string patten = "^[0-9]{1,}$";
string[] arr = null;
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(patten);//数字匹配
if (reg.IsMatch(cs) && reg.IsMatch(bcs))
{
string a = cs;
string b = bcs;
string result;
int[] c = new int[a.Length];
int[] d = new int[b.Length];
int[] f = new int[100];
arr = new string[a.Length];
int index = 0;
for (int i = 0; i < arr.Length; i++)//将字符串格式乘数存放到数组1
{
arr[i] = a.Substring(index + i, 1);
c[a.Length - i - 1] = int.Parse(arr[i]);
}
arr = new string[b.Length];
for (int i = 0; i < arr.Length; i++)//将字符串格式被乘数存放到数组2
{
arr[i] = a.Substring(index + i, 1);
d[b.Length - i - 1] = int.Parse(arr[i]);
}
result = a;//进行乘操作赋值给result比较难写没写出来,需要自己写
return result;
}
else if (cs == "" || bcs == "")
return "empty";
else
return "error";
}
}
//click事件内添加下列代码
dashucheng xc = new dashucheng();
xc.cs = textBox1.Text;
xc.bcs = textBox2.Text;
try
{
string result;
result =xc.cheng();
if (result != "error" && result != "empty")
textBox3.Text = result;
else
MessageBox.Show(result);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


解决方案三:

比较难写你再给你个思路吧,你完善下。

``` public class dashucheng
{
public string cs;//乘数
public string bcs;//被乘数
public string cheng()//乘操作返回字符串
{
string patten = "^[0-9]{1,}$";
string[] arr = null;
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(patten);//数字匹配
if (reg.IsMatch(cs) && reg.IsMatch(bcs))
{
string a = cs;
string b = bcs;
string result;
int[] c = new int[a.Length];
int[] d = new int[b.Length];
int[] f = new int[100];
arr = new string[a.Length];
int index = 0;
for (int i = 0; i < arr.Length; i++)//将字符串格式乘数存放到数组1
{
arr[i] = a.Substring(index + i, 1);
c[a.Length - i - 1] = int.Parse(arr[i]);
}
arr = new string[b.Length];
for (int i = 0; i < arr.Length; i++)//将字符串格式被乘数存放到数组2
{
arr[i] = a.Substring(index + i, 1);
d[b.Length - i - 1] = int.Parse(arr[i]);
}
result = a;//进行乘操作赋值给result比较难写没写出来,需要自己写
return result;
}
else if (cs == "" || bcs == "")
return "empty";
else
return "error";
}
}
//click事件内添加下列代码
dashucheng xc = new dashucheng();
xc.cs = textBox1.Text;
xc.bcs = textBox2.Text;
try
{
string result;
result =xc.cheng();
if (result != "error" && result != "empty")
textBox3.Text = result;
else
MessageBox.Show(result);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


时间: 2024-07-31 07:12:19

C#大数相乘问题,用三个数组来存储的相关文章

大数相乘有关位数的计算问题

问题描述 大数相乘有关位数的计算问题 如果两个大数在十位或者以下,计算结果正确,超过十位则计算错误,有时结果还会为负,这是什么情况 解决方案 Java可使用BigInteger.BigDecimal来操作 解决方案二: 大数计算问题大数相乘问题大数相乘问题 解决方案三: 数据溢出了.比如在C语言中,int类型的数据范围时-32768到32767,如果数据是32768,比32767大1,那数值就变成-32768了. 你用的是什么数据类型?10位乘以10位,那至少是20位以上的大数,你看看你那个数据

一道c的面试题,大数相乘。

这是我亲身经历的一个面试题目,并且表现的是整个面试里面最为糟糕的环节,令我十分恼火.回来以后我在tc2.0上写它,发现依然花费了我相当多的时间用于改错和调试(从这一点来看,我面试里的表现也算正常了).尽管这个问题看起来是如此的简单.当然,这里面有我对c 和c++的生疏和不熟练也有很大关系,此外是对算法的学习和研究还没有完成,还处于一个准备阶段. 题干:输入两个较大的数,输出相乘的结果.意思也就是两个数很大,超出了int的存储范围. #include <stdio.h>#include <

用javascript实现两个大数相乘

(function (){ var addLarge = function(n1,n2){ var carry = 0; var ret = ""; n1=n1.toString(); n2=n2.toString(); var len = Math.min(n1.length,n2.length); var sln1 = n1.substr(n1.length - len,n1.length ); var sln2 = n2.substr(n2.length - len,n2.len

还是link中混编的问题,如何随机按照三个数组的比例混编,比如10% 10% 80%

问题描述 还是link中混编的问题,如何随机按照三个数组的比例混编,比如10% 10% 80% 还是link中混编的问题,如何随机按照三个数组的比例混编,比如10% 10% 80% 解决方案 a.Take(a.Count / 10).Concat(b.Take(b.Count / 10)).Concat(c.Take(c.Count * 8 / 10)).OrderBy(_ => Guid.NewGuid())

JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想

JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 数组的格式 //公共的 类 类名 public class HelloJJAVA { // 公共的 静态 无返回值 main方法 数组 public static void main(String[] str) { /** * 格式:元素类型

java大数相乘,希望出界抛异常。

问题描述 如题,我自己测试的时候,如果两个int型大数相乘,结果为负,求检测溢出的方法,并掷出异常的代码 解决方案 /** * Multiply two integers, checking for overflow. * * @param x a factor * @param y a factor * @return the product <code>x*y</code> * @throws ArithmeticException if the result can not

深入分析C++中两个大数相乘结果不正确的问题_C 语言

在编写代码做测试时发现两个大数相乘结果不正确的问题,测试代码如下: #include "stdafx.h"#include<stdlib.h>#include<time.h>int _tmain(int argc, _TCHAR* argv[]){      time_t temp1=1345172428000000;    time_t temp2=1345172428*1000000;   ::system("pause");    re

《快学Scala》第三章 数组相关操作

本文转自博客园xingoo的博客,原文链接:<快学Scala>第三章 数组相关操作,如需转载请自行联系原博主.

解决方案-数组如何存储才合适?

问题描述 数组如何存储才合适? 需求是这样: 存在每六分钟存在一个800*1000的二维数据. 现在打算入库,但占用空间. 如果压缩了,对过去一小时内12个800*1000的数据就无法进行求和了? 现在初步思路是想把数据经过压缩后存到mogodb数据库中. 如果求和取出来,再压. 请问大家有否一些更加好的解决方案. 解决方案 要看你的数据是什么样的,你可以保存每个部分的数据的中间统计结果.如果二维数据有某些特征,可以考虑使用稀疏存储或者增量存储. 解决方案二: 如果只是求和,那就保存和.原始数据