linux c 实现大数相乘
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdbool.h> #define MAX_LENGTH 128
#define ASSIST_LENGTH 19 int main(int argc, char **argv)
{
unsigned long long data[MAX_LENGTH] = {}, tmp = ;
int i = , j = , o_len = MAX_LENGTH - ASSIST_LENGTH;
bool c_flag = true; if (argc < )
{
printf("argument error\n");
return -;
} if (strlen(argv[]) > o_len)
{
printf("out of range\n");
return -;
} if (strlen(argv[]) > )
{
printf("out of range\n");
return -;
} tmp = atoll(argv[]); if (9223372036854775807ULL == tmp && ('' == argv[][] || '' == argv[][]))
{
printf("out of range\n");
return -;
} for (i = strlen(argv[])-; i >= ; i--)
{
data[j] = argv[][i] - ;
j++;
} for (i = o_len - ; i >= ; i--)
{
if (c_flag && == data[i])
{
continue;
} c_flag = false;
printf("%llu", data[i]);
}
printf(" * %llu\n", tmp); for (i = ; i < o_len; i++)
{
if ( == data[i])
{
continue;
} data[i] *= tmp;
} for (i = ; i < o_len; i++)
{
if ( == data[i])
{
continue;
} tmp = data[i]; for (j = ASSIST_LENGTH-; j >= ; j--)
{
data[i+j] += (tmp / (unsigned long long)pow(,j));
tmp %= (unsigned long long)pow(,j);
} data[i] %= ;
} c_flag = true;
for (i = MAX_LENGTH - ; i >= ; i--)
{
if (c_flag && == data[i])
{
continue;
} c_flag = false;
printf("%llu", data[i]);
}
printf("\n"); return ;
}
实现了任意大数与 2^64-1以下的数相乘,
两个任意大数可以将其中一个拆分成多个因子,
两个大数质数暂未考虑
linux c 实现大数相乘的更多相关文章
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...
- POJ 2389 Bull Math(水~Java -大数相乘)
题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...
- 大数相乘算法C++版
#include <iostream> #include <cstring> using namespace std; #define null 0 #define MAXN ...
- java版大数相乘
在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...
- Karatsuba乘法--实现大数相乘
Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...
- leetcode 43 Multiply Strings 大数相乘
感觉是大数相乘算法里面最能够描述.模拟演算过程的思路 class Solution { public String multiply(String num1, String num2) { if(nu ...
- Java 大数相乘、大数相加、大数相减
思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...
- 华为上机测试题(大数相乘-java)
PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...
- 求解Catalan数,(大数相乘,大数相除,大数相加)
Catalan数 卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名.历史上,清代数学家明安图(1692年-1763年)在其<割圜 ...
随机推荐
- cxGrid使用汇总1
这些都不是原创,只是平时收集到资料然后整理的,有些可能百度一下到处都是而且还大同小异也有些不是很好找,现在贴出来希望给那些用到cxGrid的人会有所帮助 1. 去掉cxGrid中台头的Box 解决:在 ...
- php用curl获取远端网页内容
<?php $url="http://www.baidu.com";$cc=curl_init(); curl_setopt($cc,CURLOPT_URL,$url); c ...
- hdu-5703 Desert(水题)
题目链接: Desert Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Pr ...
- android目录
2013-09-121.activity生命周期 activity生命周期2 widget http://blog.csdn.net/xiang_j2ee/article/details/727564 ...
- 转: 微博的多机房部署的实践(from infoq)
转: http://www.infoq.com/cn/articles/weibo-multi-idc-architecture 在国内网络环境下,单机房的可靠性无法满足大型互联网服务的要求,如机房 ...
- sharepoint 2013 "The module ... owssvr.dll could not be loaded due to a configuration problem"
打开sharepoint站点可以看到这个503的错误, 在event viewer中查看如下: The Module DLL 'C:\Program Files\Common Files\Micros ...
- Bootstrap,导航栏点击效果修复(补)
前言: 昨天晚上休息,忘记发博客了.对于学习这件是,还是需要坚持的.想想自建一个Jekyll博客模版还是很兴奋的,话不多说,看正文吧! 关于开发: 先看个Demo吧,点这里.你会发现,点击是没有效果 ...
- 【Mongodb】---关联表查询population
Population MongoDB是非关联数据库.但是有时候我们还是想引用其它的文档.这就是population的用武之地. Population是从其它文档替换文档中的特定路径.我们可以迁移一个单 ...
- ubuntu安装 ibus-google输入法
1.$sudo apt-get install ibus-googlepinyin //ibus 融合了许多种输入法,google便是一种,此步就是下载安装ibus-google拼音输入法. ...
- 《Cocos2d-x实战 JS卷 Cocos2d-JS开发》上线了
感谢大家一直以来的支持! 各大商店均开始销售:京东:http://item.jd.com/11659698.html当当:http://product.dangdang.com/23659808.ht ...