将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. JBOss 端口没占用!

    打开exlipse ,启动服务器 后,报如下错误:

  2. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  3. Codeforces Round #325 (Div. 2) B. Laurenty and Shop 前缀和

    B. Laurenty and Shop Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/586/p ...

  4. 《Java并发编程实战》第十五章 原子变量与非堵塞同步机制 读书笔记

    一.锁的劣势 锁定后假设未释放.再次请求锁时会造成堵塞.多线程调度通常遇到堵塞会进行上下文切换,造成很多其它的开销. 在挂起与恢复线程等过程中存在着非常大的开销,而且通常存在着较长时间的中断. 锁可能 ...

  5. iOS开发——面试笔试精华(一)

    面试笔试精华(一) 1.        #import 跟#include.@class有什么区别?#import<> 跟 #import”"又什么区别? 1>  #imp ...

  6. 【面试题】如何让C语言自动发现泄漏的内存

    1. 题目 改造malloc和free函数,使C语言能自动发现泄漏的内存,在程序退出时打印中遗漏的内存地址和大小. 2. 思路 用一个链表来记录已经分配的内存地址.在malloc时,把分配的内存地址和 ...

  7. Asp.Net 之 未能加载文件或程序集 system.web.extensions 解决方法

    最近做项目发现未能加载文件或程序集的错误,这是由于我的机器上没有安装Ajax的原因.问题解决后,整理如下:表现:1."System.Web.Extensions, Version=1.0.61025. ...

  8. How to install VXDIAG Honda, Toyota and JLR SDD software

    EOBD2 has newly launched Allscanner VXDIAG multi diagnostic tool with OEM diagnostic software: Honda ...

  9. 修改UIBarButtonItem字体大小、颜色等相关属性

    在ios中如果想修改UIBarButtonItem里面的内容有很多种方法,常见的就是自定义contentView  但是有时候因为懒不想自定义只想在原来的文字上进行修改 如果只是修改UIBarButt ...

  10. the first assignment of software testing

    Github ID:  bzdwdmzjsmff Github address: https://github.com/bzdwdmzjsmff alternative article: Increa ...