标题:高精度数和的平方
只看楼主
杜杜
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-3-14
 问题点数:0 回复次数:1 
高精度数和的平方
【问题描述】

请编程实现,输入两个数(位数不超过100位),输出它们的和的平方。

输入:两行,第一行为一个数a,第二行为一个数b。

输出:一行,一个数c(c>=0),表示a与b的和的平方。

【样例输入】

12345678

76

【样例输出】

152417641828516
搜索更多相关主题的帖子: 高精度 一个数 输出 平方 输入 
2021-05-08 09:31
spark_M
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-5-22
得分:0 
回复 楼主 杜杜
#include<bits/stdc++.h>
int a[10005],b[10005],c[10005],d[10005],l,la,lb;
//先进行c=a+b,然后d=c*c
int main(){
    char a1[2005],b1[2005];
    scanf("%s%s",a1,b1);
    la=strlen(a1); lb=strlen(b1);
    for(int i=la-1;i>=0;i--) a[la-i]=a1[i]-'0';
    for(int i=lb-1;i>=0;i--) b[lb-i]=b1[i]-'0';
    l=la>lb?la:lb;
    for(int i=1;i<=l;i++){
        c[i]+=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]%=10;
    }//高精加
    for(int i=1;i<=l;i++)
        for(int j=1;j<=l;j++)
            d[i+j-1]+=c[i]*c[j];
    l*=l;
    for(int i=1;i<=l;i++){
        d[i+1]+=d[i]/10;
        d[i]%=10;
    }
    while(!d[l]) l--;//高精乘
    for(int i=l>1?l:1;i>0;i--) printf("%d",d[i]);
    return 0;
}
2021-05-22 23:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505682-1-1.html




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

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