将N*N乘法转化为(N*n1)+(N*n2)....(N*nn)

乘完后在补充小数点

        public static char[] Quadrature(string a, string b)
{
char[] r = new char[] { '' };
List<int> bu = new List<int>();
List<int> au = new List<int>();
int adot = a.Length;
int bdot = b.Length;
for (int i = b.Length - ; i >= ; i--)
{
if (b[i] == '.')
{
bdot = i;
}
else
{
bu.Add(b[i] - );
}
}
for (int i = a.Length - ; i >= ; i--)
{
if (a[i] == '.')
{
adot = i;
}
else
{
au.Add(a[i] - );
}
}
a = "";
for (int i = au.Count() - ; i >= ; i--)
{
a += au[i];
} for (int i = ; i < bu.Count(); i++)
{
char[] qq = QuadUnit(a, bu[i]);
string qqq = "";
for (int j = ; j < i + ; j++)
{
qqq = "";
foreach (var item in qq)
{
qqq += item;
}
qq = QuadUnit(qqq, );
}
qqq = "";
foreach (var item in qq)
{
qqq += item;
}
string rr = "";
foreach (var item in r)
{
rr += item;
}
r = SumF(rr, qqq); }
List<char> rer = new List<char>();
for (int i = ; i < r.Count(); i++)
{
rer.Add(r[i]);
}
int con = rer.Count();
int dot = a.Length + b.Length - (adot + bdot); //Console.WriteLine(a);
//Console.WriteLine(b);
//Console.WriteLine(a.Length);
//Console.WriteLine(b.Length);
//Console.WriteLine(adot);
//Console.WriteLine(bdot);
//Console.WriteLine(con);
//Console.WriteLine(dot);
//Console.WriteLine(con-dot); if (con - dot > )
{
if (con - dot != con)
{
rer.Insert(con - dot + , '.');
}
}
else if (con - dot < )
{
rer.Insert(, '.');
rer.Insert(, ''); int co = - * (con - dot) - ;
while (co > )
{
rer.Insert(, '');
co--;
}
}
else
{
rer.Insert(, '.');
rer.Insert(, '');
} return rer.ToArray();
}
public static char[] QuadUnit(string a, int b)
{
int r = ;
int jw = ;
char[] c = a.ToCharArray();
List<char> items = new List<char>();
List<char> ritems = new List<char>();
for (int i = c.Count() - ; i >= ; i--)
{
if (a[i] == '.')
{
r = '.';
items.Add(Convert.ToChar(r));
}
else
{
r = ((int)c[i] - ) * b + jw;
jw = ;
if (r >= )
{
jw = r / ;
r %= ;
}
items.Add(Convert.ToChar(r.ToString()));
} }
if (jw > )
{
items.Add(Convert.ToChar(jw.ToString()));
} for (int i = (items.Count() - ); i >= ; i--)
{
ritems.Add(items[i]);
}
return ritems.ToArray();
}

C# 高精度乘法 支持小数(待优化)的更多相关文章

  1. C# 高精度加法 支持小数(待优化)

    直接上代码 实现思路: 1.首先小数点补 位,9223372036854775808.9+9223372036854775808.9223372036854775808 => 922337203 ...

  2. C# 高精度减法 支持小数(待优化)

    是现实思路 1,先小数点补位,8913758923475893274958738945793845-4893127498372459823745324532453245.284929384729837 ...

  3. JS高精度乘法计算问题(牛客网乘法-求 a 和 b 相乘的值,a 和 b 可能是小数,需要注意结果的精度问题)

    用到的知识点===> toFixed(num); toFixed() 方法可把 Number 四舍五入为指定小数位数的数字; 参数num: 代表小数位数: 例:var num = 5.56789 ...

  4. 高精度乘法--C++

    高精度乘法--C++ 模仿竖式乘法,在第一步计算的时候将进位保留,第一步计算完再处理进位.(见代码注释) 若要处理正负情况,可在数据输入后加以判断,处理比较简单. 小数计算也可参照该方法,不过对齐方式 ...

  5. 高精度乘法(FFT)

    学会了FFT之后感觉自己征服了世界! 当然是幻觉... 不过FFT还是很有用的,在优化大规模的动规问题的时候有极大效果. 一般比较凶残的计数动规题都需要FFT(n<=1e9). 下面是高精度乘法 ...

  6. [vijos P1040] 高精度乘法

    如果这次noip没考好,完全是因为从7月29日之后就没有再写过程序了.说起来,真是一个泪流满面的事实… 那这样一个弱智题练手恢复代码能力,竟然还花了我两个晚上(当然不是两整个晚上…) 第一天TLE了, ...

  7. 【PKU1001】Exponentiation(高精度乘法)

    Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 145642   Accepted: 35529 ...

  8. hdu 1042 N!(高精度乘法 + 缩进)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目大意:求n!, n 的上限是10000. 解题思路:高精度乘法 , 因为数据量比较大, 所以 ...

  9. hdu 1042 N!(高精度乘法)

    Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!   Input One N in ...

随机推荐

  1. IOS多线程知识总结/队列概念/GCD/主队列/并行队列/全局队列/主队列/串行队列/同步任务/异步任务区别(附代码)

    进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间 线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程 队列 dispa ...

  2. sonne_game网站开发03 spring-mvc+freemarker整合

    今天的任务就是在spring+mybatis+springmvc的基础上,将freemarker整合进来. freemarker是什么? freemarker是一种模板引擎.它的目的是基于模板和数据, ...

  3. [一位菜鸟的COCOS-2D编程之路]精灵表单的制作以及简易动画的生成

    1.第一步:使用Zwoptex 制作精灵表单 2.制作的表单的名称为 cocos2Dpng,cocos2D.plist: 3.精灵的动画效果 主要分为五部分. // on "init&quo ...

  4. Gitbook安装

    Gitbook安装 Gitbook是从NMP安装的,命令行: $ npm install gitbook -g 安装完之后,你可以检验下是否安装成功: $ gitbook -V 0.4.2 如果你看到 ...

  5. cocos2d-x 将cocosbuilder输出文件映射成对象的原理

    转自:http://www.cnblogs.com/fox7nights/archive/2013/02/21/2920640.html 一.调用代码 CCNode* GameOverScene::l ...

  6. cocos2d-x 精灵遮罩

    转自:http://bbs.9ria.com/thread-220210-1-4.html 首先得理解一些东西. 1.理解颜色混合.精灵有个成员函数:setBlendFunc(),这个函数以一个ccB ...

  7. Effective C++ 条款45

    本节条款的题目是运用成员模板接受全部兼容类型 作者阐述自己的观点是通过智能指针的样例. 在学习本节条款之前我们要先明确关于隐式转化的问题 例如以下代码: #include<iostream> ...

  8. Linux开发环境搭建与使用——ubuntu更新设置

    ubuntu操作系统公布时,为了减小操作系统的体积,只配备了主要的系统软件.应用软件.我们开发中须要用到的大部分软件都须要在使用中从网上自行更新. 假设ubuntu没有网络,能够说寸步难行. 以下教大 ...

  9. [Whole Web] [Node.js] [Browserify] [Grunt] Automation task with grunt-browserify & grunt-contrib-watch

    What we want is when the server side Node.js files have been changed, we want to use browserify to b ...

  10. MongoDB入门简单介绍

    有关于MongoDB的资料如今较少,且大多为英文站点,以上内容大多由笔者翻译自官网,请翻译或理解错误之处请指证.之后笔者会继续关注MongoDB,并翻译“Developer Zone”和“Admin ...