| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 846 人关注过本帖
标题:100位的大数的乘法
只看楼主 加入收藏
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
100位的大数的乘法
程序代码:
#include"stdio.h"
#include"string.h"
void ones(int *s,char *a,char b)//一次运算,两组数据,其中一对的相乘
{
    int x=(*a-48)*(b-48);
    if(x+*s>=10)
    {
        *(s+1)+=(x+*s)/10;
        *s=(*s+x)%10;
    }
    else
    *s+=x;
}
int main()
{
    int T;
    char A[105],B[105],*a,*b;
    int end[10005];
    int i,maxlen,j;
    scanf("%d",&T);
    int t;
    for(t=1;t<=T;t++)
    {
        memset(A,0,sizeof(char)*8);//赋0;
        memset(B,0,sizeof(char)*8);
        memset(end,0,sizeof(int)*8);
        scanf("%s%s",&A,&B);
        if(strlen(A)>=strlen(B))//使之a为最长的数据
        {
            a=A;
            b=B;
        }
        else
        {
            a=B;
            b=A;
        }
        for(i=strlen(b)-1;i>=0;i--)//运算顺序
        {
            for(j=strlen(a)-1;j>=0;j--)
            ones(end+(strlen(b)-1-i)+(strlen(a)-1-j),a+j,*(b+i));
        }
        printf("Case %d:\n",t);
        printf("%s * %s = ",A,B);
        maxlen=end[strlen(a)+strlen(b)-1-1+1]>0?strlen(a)+strlen(b)-1-1+1:strlen(a)+strlen(b)-1-1;//判断结果是否多一位
        for(i=maxlen;i>=0;i--)
        printf("%d",end[i]);
        printf("\n");
        if(t!=T)
        printf("\n");
    }
}

这是我的代码
测试例子
2
1 2
123456789 987654321
输出
Case 1:
1 * 2 = 2

Case 2:
123456789 * 987654321 = 121932631112635269
我测试的时候输出都没有错
但交上去就错了
http://acm.tzc.
题目链接
2013-11-10 15:06
fengfengyy
Rank: 2
等 级:论坛游民
帖 子:25
专家分:83
注 册:2013-10-30
收藏
得分:2 
#include"stdio.h"
#include"string.h"
void ones(int *s,char *a,char b)//一次运算,两组数据,其中一对的相乘
{
    int x=(*a-48)*(b-48);
    if(x+*s>=10)
    {
        *(s+1)+=(x+*s)/10;
        *s=(*s+x)%10;
    }
    else
    *s+=x;
}
void main()
{
    int T;
    char A[105],B[105],*a,*b;
    int end[10005];
    int i,maxlen,j;
    scanf("%d",&T);
    int t;
    for(t=1;t<=T;t++)
    {
        memset(A,0,sizeof(char)*8);//赋0;
        memset(B,0,sizeof(char)*8);
        memset(end,0,sizeof(int)*8);
        scanf("%s%s",&A,&B);
        if(strlen(A)>=strlen(B))//使之a为最长的数据
        {
            a=A;
            b=B;
        }
        else
        {
            a=B;
            b=A;
        }
        for(i=strlen(b)-1;i>=0;i--)//运算顺序
        {
            for(j=strlen(a)-1;j>=0;j--)
            ones(end+(strlen(b)-1-i)+(strlen(a)-1-j),a+j,*(b+i));
        }
        printf("Case %d:\n",t);
        printf("%s * %s = ",A,B);
        maxlen=end[strlen(a)+strlen(b)-1-1+1]>0?strlen(a)+strlen(b)-1-1+1:strlen(a)+strlen(b)-1-1;//判断结果是否多一位
        for(i=maxlen;i>=0;i--)
        printf("%d",end[i]);
        printf("\n");
        if(t!=T)
        printf("\n");
    }
}你主函数应用void
2013-11-10 17:59
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
回复 2楼 fengfengyy
这不是问题..............
2013-11-10 20:03
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:2 
99999 * 99999


[fly]存在即是合理[/fly]
2013-11-10 23:02
Magic_July
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:109
注 册:2012-9-25
收藏
得分:0 
回复 4楼 azzbcc
99999 99999
输出没有错

[ 本帖最后由 Magic_July 于 2013-11-11 12:00 编辑 ]
2013-11-11 11:55
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
show代码?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-11 12:05
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:2 
搞宣传?我注册了个玩玩

埋头做牛,抬头做人,低头做狗
2013-11-11 17:58
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
1
99999 99999
Case 1:
99999 * 99999 = -85899336199800001
VC++ 6.0


[fly]存在即是合理[/fly]
2013-11-11 18:26
yueyang3081
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2013-11-11
收藏
得分:2 
QUIT
2013-11-11 18:58
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:2 
以下是引用yuccn在2013-11-11 12:05:43的发言:

show代码?
看来是
2013-11-11 21:58
快速回复:100位的大数的乘法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022315 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved