昨天做排列组合的时候遇到A(a,b)这个问题,需要计算A(20,20)超大,计算机32位的,最大数只能是2^32,这让我很悲伤!

于是乎就自己研究了如何进行超大数的计算!

/*********************************************************************************
* Copyright: (C) 2013 Chen ZhenWei<ieczw@qq.com>
* All rights reserved.
*
* Filename: bignum.c
* Description: This file
*
* Version: 1.0.0(12/12/2013~)
* Author: Chen ZhenWei <ieczw@qq.com>
* ChangeLog: 1, Release initial version on "12/12/2013 08:21:23 AM"
*
********************************************************************************/ #include <stdio.h>
#include <string.h> int save_num(const char *str,unsigned short *num)
{
int i=0;
int length = strlen(str); for(i=0; i<length/2; i++)
{
// printf("%c == %c\n",str[length-1-i*2],str[length-2-i*2]);
num[i] = (str[length-1-i*2]-'0')+10*(str[length-2-i*2]-'0');
}
if(length%2 != 0)
{
num[i] = str[0] - '0';
return i+1;
}
return i;
} void main()
{
unsigned short numa[100];
unsigned short numb[100];
unsigned short result[200];
unsigned short carry;
int i=0,j=0,lena,lenb,res_len;
char strnum[64];
char flag; scanf("%s",strnum);
lena = save_num(strnum,numa);
//scanf("%c",&flag);
scanf("%s",strnum);
lenb = save_num(strnum,numb);
memset(result,0x0,200*2); for(i=0; i<lena; i++)
for(j=0; j<lenb; j++)
{
carry = numa[j] * numb[i];
result[j+i] += carry%100;
result[j+i+1] += carry/100;
}
res_len = j+i+1; for(i=0; i<res_len; i++)
{
if(result[i]>=100)
{
result[i+1] += result[i]/100;
result[i] = result[i]%100;
}
}
for(i=res_len; i>0; i--)
{
printf("%02d",result[i-1]);
} printf("\n"); }

设计思路:

操作结果:

【C语言】超大数乘法运算的更多相关文章

  1. 使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码

    正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. 比如我们知道的int.long.short.unsigend int.u ...

  2. C++语言-02-函数

    普通函数 C++是在C语言的基础上增加了面向对象特性的语言,是C语言的超集 C++中的普通函数与C语言中的普通函数具有类似的性质.请参照以下博客:C语言-04-函数 与类相关的函数 C是一种OOP语言 ...

  3. 2004: C语言实验——数日子(数组)

    2004: C语言实验——数日子 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 213  Solved: 111[Submit][Status][Web ...

  4. C语言-04-函数

    函数 函数是一组一起执行任务的语句,函数是一个可执行C程序必不可少的条件(至少一个main()函数),函数的定义形式 returnType functionName() { bodyOf of the ...

  5. 李洪强-C语言5-函数

    C语言函数 一.函数 C语言程序是由函数构成的,每个函数负责完成一部分的功能,函数将工恩呢该封装起来,以供程序调用. 二.函数定义 目的:将一些常用的功能封装起来,以供日后调用. 步骤:确定函数名,确 ...

  6. uva 10692 Huge Mods 超大数取模

    vjudge上题目链接:Huge Mods 附上截图: 题意不难理解,因为指数的范围太大,所以我就想是不是需要用求幂大法: AB % C = AB % phi(C) + phi(C) % C ( B ...

  7. C语言 猜数游戏--产生一个随机数

    #include <stdio.h> #include <time.h> #include <stdlib.h> int main(int argc, const ...

  8. C语言之一数三平方

    一数三平方 有这样一个六位数,它本身是一个整数的平方,其高三位和低三位也分别是一个整数的平方,如225625=475*475,225=15*15,625=25*25;统计所有符合该条件的六位数 源代码 ...

  9. c语言推断数是否是素数

    这是推断数是否是素数.网络版非常.我觉得有点问题.今天一个朋友问我这个问题.我知道,今天,我把自己的代码,非常实用哦!. #include<stdio.h> #include<mat ...

随机推荐

  1. extjs 优化小建议

    1 原文信息 原文标题: Sencha Con 2013: Ext JS Performance tips 原文地址: [http://edspencer.net/2013/07/19/sencha- ...

  2. javascript特效:会随着鼠标而动的眼睛

    这个特效非常简单,其中眼球和眼珠都是特定的图片.只要掌握好距离坐标就没问题.我就直接贴代码,有兴趣的朋友可以自己复制下来运行一下,下面的眼睛图像就是我的文件用到的图像,比较难看..我就把我的代码贴出来 ...

  3. php5.5 + apache2.4 安装配置

    php5.5 做了大量的更新,在与apache搭配的时候如何选择也很有讲究,这里我们以64位 php5.6 和 Apache2.4为例介绍如何配置. 工具/原料 Win7/8 64位 php5.5.6 ...

  4. mysql简单使用增删改查

    修改配置文件 在my.in配置文件 找到client 指的是mysql客户端 port3306 default -charachter-set=utf-8 default -charachter-se ...

  5. [Swust OJ 585]--倒金字塔(LIS最长不下降子序列)

    题目链接:http://acm.swust.edu.cn/problem/585/ Time limit(ms): 3000 Memory limit(kb): 65535   SWUST国的一支科学 ...

  6. ZOJ 3778 Talented Chef 模拟 [ 祝愿明天省赛一帆风顺, ZJSU_Bloom WILL WIN : )

    这题的意思是给你 n 道菜,第 i 道菜需要 Ai 步才能完成 每次你能对 m 道菜分别完成一步,请问最少需要几次? 这题暴力写肯定是不行的,去年省赛的时候就是没写出来这题,今天再把思路理一理吧. 首 ...

  7. Ural 1068 - Sum

    Your task is to find the sum of all integer numbers lying between 1 and N inclusive. Input The input ...

  8. SDRAM 控制器的解析

    本篇博文非原创,是整理了网上的各家之言与一体,为自己以后方便查询所用.如有冒犯请告之. 1.Precharge与Refresh的区别? plj:两者都是对存储单元的电容进行充电.回写.但差异在于: P ...

  9. search_word

    一个小程序,用asc码输出自己的名字.要求是,a~z两路输入,输出了一个完整的拼音之后还需要输出一个空格.—— 信息硬件过滤的雏形. module search_word ( clock , rese ...

  10. Week8(10月28日)

    Part I:提问  =========================== 1. Lazy.Eager.Explicit Loading的关键字是什么? 2. 请比较三种加载方式的性能. Part ...