首页 > 其他 > 详细

大数相乘

时间:2015-03-26 23:40:10      阅读:340      评论:0      收藏:0      [点我收藏+]
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
int i,j;
char num1[100]={0};
char num2[100]={0};
gets(num1);
gets(num2);
int  number1[100];
int  number2[100];
int  result[201]={0};
for(i=0;i<strlen(num1)/2;i++)
{
char tmp = num1[i];
num1[i] = num1[strlen(num1)-1-i];
num1[strlen(num1)-1-i] = tmp;
}
for(i=0;i<strlen(num2)/2;i++)
{
char tmp = num2[i];
num2[i] = num2[strlen(num2)-1-i];
num2[strlen(num2)-1-i] = tmp;
}
for(i=0;i<strlen(num1);i++)
{
number1[i]=num1[i]-‘0‘;
}
for(i=0;i<strlen(num2);i++)
{
number2[i]=num2[i]-‘0‘;
}

for(i=0;i<strlen(num1);i++)
{
for(j=0;j<strlen(num2);j++)
{
result[i+j] = result[i+j] + number1[i]*number2[j];
}
}

for(i=0;i<200;i++)
{
result[i+1]=result[i+1]+result[i]/10;
result[i] = result[i]%10;
}


for(i=200;i>-1;i--)
{
if(result[i]>0)
break;
}
if(i==-1)
{
printf("\n%d",0);
}
for(j=i;j>-1;j--)
{
printf("%d",result[j]);
}

return 0;

}

 求算n!

#include<iostream>
#define MAX 1000
using namespace std;

int main(void)
{
    int n;
    while(scanf("%d",&n)==1&&n>=0)
    {
        int i,j;
        int a[MAX];      //存数运算结果
        int p,h;           //p存储当前结果的位数,h为进位
        a[1]=1;
        p=1;  
        for(i=2;i<=n;i++)   //循环与2,3,4.....n相乘
        {
            for(j=1,h=0;j<=p;j++)    //让a[]的每位与i相乘
            {
                a[j]=a[j]*i+h;
                h=a[j]/10;
                a[j]=a[j]%10;
            }
            while(h>0)         //如果h不为0
            {
                a[j]=h%10;
                h=h/10;
                j++;
            }
            p=j-1;            //将当前的位数赋给p
        }
        for(i=p;i>=2;i--)
        {
            printf("%d",a[i]);
        }
        printf("%d\n",a[i]);
    }
    return 0;
}

大数相乘

原文:http://blog.csdn.net/u014082714/article/details/44653869

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!