永发信息网

谁能看看我的高精有什么问题

答案:1  悬赏:20  手机版
解决时间 2021-08-11 06:19

我写了RQNOJ上的a*b,必须用压位高精,但又没写过。

所以写写试了一下,但有问题。

请大牛看看,或给我一些代码看看。

谢谢。

下面是我的代码:

#include"stdio.h"
#include"string.h"
char aa[10000],bb[10000];
long long fa=0,fb=0,ra=0,rb=0,ff=0;
long long a[10000],b[10000],c[10000],lc;
long long n,i,j;
void change()
{
      long long q,w,s,s1;
      q=n-1; //  控制位数
      w=0;   //  每9位进位
      s=0;   //  记下a[]每位的值
      s1=1;  //  处理数值进制问题
      while(q>=fa)  //  对aa进行处理,q为位数
      {
         s+=(aa[q]-'0')*s1;  //  加上每位数
         s1*=10;  //  处理进制
         if(w==3 || q==0)  //  进位的要求
         {
            a[ra++]=s;  //  进位
            s=0;  //  将s清空
            s1=1;  // 将位数进制也清为1
         }
         w++;  //  记下位数,每9位则进
         q--;  //  位置改变
      }
      //  同上述a[]
      q=n-1;
      w=0;
      s=0;
      s1=1;
      while(q>=fb)
      {
         s+=(bb[q]-'0')*s1;
         s1*=10;
        
         if(w==3 || q==0)
         {
            b[rb++]=s;
            s=0;
            s1=1;
         }
         w++;
         q--;
      }
}
void Input()
{
      scanf("%d",&n);
      scanf("%s%s",aa,bb);
      if(aa[0]=='-' && bb[0]!='-') //  a为负数,b为正数
         ff=fa=1;
      if(aa[0]!='-' && bb[0]=='-') //  a为正数,b为负数
         ff=fb=1;
      if(aa[0]=='-' && bb[0]=='-') //  a,b都为负数
         fa=fb=1;
      change();  // 字符串转换为数
}
int main()
{
      Input();
      for(i=fa;i<ra;i++)  //  让a[]的每位乘,模拟手算
      {
         for(j=fb;j<rb;j++) //  同上述a[]
         {
            c[i+j]+=a[i]*b[j];
            c[i+j+1]+=c[i+j]/10000;  //  进位
            c[i+j]=c[i+j]%10000;  //  存下
         }
         int t=i+j+1;  //  把没有完全进位的部分处理
         while(a[t]>0)
         {
            a[t++]+=a[t]%10000;  //  处理
            a[t]/=10000;  //  将进完的剔除
         }
      }
      lc=rb+ra-1;
      if(c[rb+ra]!=0)  //  是否在最后进位了
         lc=rb+ra;
      if(ff)  //  如果结果为负数
         printf("-");  //  则先输出负号
      for(i=lc-1;i>=0;i--)  //  输出结果
         printf("%d",c[i]);
      getchar();
      getchar();
      return 0;
}

最佳答案

您可以在这里搜索问题或者提问
谁帮我编个高精度加,高精度乘的函数?
悬赏分:0
一定注意要求!!!!!读入与返回值都为字符串类型数据。函数 PASCAL过几天复赛用,急背
最佳答案:
用BigDecimal 这个类 是PASCAL语言饿BigDecimal 是什么哦public class ceshi public static String multiply(String sum1 ,String sum2) public static void main(String[] args) }测试结果是:1000000000098989.1829182918291+109239012830912830912830.0192830912830912=109239013830912831011819.20220138311219121000000000098989.1829182918291*109239012830912830912830.0192830912830912=109239012841726311535762877630033952526.67913360938648445048395011392没有做保留小数的约束我也不知道你要精确到几位小数看不懂啊,而且这。。说不下去了
评论字数在200 字以内
“同创IT网”版权所有 (c)2006-2008

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
梦幻西游狮驼如何点点???
和一个你喜欢的而且也对你有点好感的女孩坐在
英语句子结构?
我的全屏怎么关不掉
心情莫名不好的时候该怎么办?
谁能帮我注册个苹果账号啊
乐岛 高台戏水
汨罗市岳阳重庆鸡公煲(汩罗总店)(暂停营业)地
<<黑执事>>的片尾曲空间播放器链接.一定要能
帮我起一个好听的网名
我的运单号368051664637申通的谁能帮我查下谢
太阳能48V电压的要多少钱?
怎么用手机开会员?
喜欢许嵩的多还是周杰伦的多.
QQ空间相册上传日期能否改
推荐资讯
龙之谷疲劳度是啥?,没有了怎麽办?
怎样才能让英语达到同声翻译的水平
胡歌这个发型怎么弄
1000元以下触屏手机
大家好,我想到汶川理县去开个买衣服的铺子。
从宁波坐火车到深圳要多久车费多少
咸阳湖上边的那个桥的北边的那个建行大厦的旁
千年王八万年龟 王八是指什么
女孩子打球會很不雅嗎?
十级工伤在张家港市怎么赔偿
有什么适合一个人寂寞时候听的歌?最好多一点
我的手机是诺机亚6500S,不小心被我用了"手机
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?