找回密码
 入驻
搜索
查看: 297|回复: 3

谁能告诉我怎么做,计算机的,说呀

[复制链接]
发表于 2008-6-19 21:22:46 | 显示全部楼层 |阅读模式
[发帖际遇]: 原始人的奔跑请朋友们喝酒, 用了现金22思明币.


实现1000位的正整数加法。即ab都是1000位的正整数,a+b=c,求c的精确值。
要求:

1
、请自己实现这个计算过程,不可使用Java中现成的长整数类进行运算。

2
、请给出下面2个数相加的和
      

47998696432080070920456746191242383726053999053643478051957351014
45117427936153716620353811920452602

20269590956239371243243004254210598671379222689737177478007105440
05928369736342120056133034220368871

提示:
       这里给出一种方法。将长整数使用数组保存,然后两个数组每一位进行加法运算,注意进位操作,最终得到结果数组。
       例如:

1
5
6
7
4


+
4
6
1
8


--------*----*---------*----


2
0
2
9
2

       首先是48相加得到2并进位
       然后是71相加得到9(加上进位)
       然后是66相加得到2并进位
       然后是54相加得到0(加上进位)
       然后是1加上进位得到2
       于是得到新的数组20292,即是结果
发表于 2008-6-19 21:24:18 | 显示全部楼层
要精确到多少位
飞龙
回复

使用道具 举报

 楼主| 发表于 2008-6-19 21:38:29 | 显示全部楼层
原帖由 yellowen 于 2008-6-19 21:24 发表
要精确到多少位
飞龙
我卡在进位那里,我写到:
public void getResult()
{
  String str1="546322";
  String str2="12354";
  int[] in1=this.strChange(str1);
  int[] in2=this.strChange(str2);
  List<Integer> list1=this.intChange(in1);
  List<Integer> list2=this.intChange(in2);  
  Collections.reverse(list1);
  Collections.reverse(list2);
  boolean b = false;
//  String sum="";
  int s=0;
  
  if(list1.size()>list2.size())
  {
   int[] in3=new int[list1.size()];
   boolean[] flag=new boolean[list1.size()];
   for(int i=0;i<list1.size();i++)
   {
    s=list1.get(i)+list2.get(i);
    if(s>=0)
    {
     in3=s%10;
     flag=true;
    }
    else
    {
     in3=s;
     flag=false;
    }
   
    /*int s= list1.get(i)+list2.get(i);
    if(b){
   
     if(s>9){
      b=true;
      sum+=(s+1)+"";
     }
    }else
    {
     int s= list1.get(i)+list2.get(i);
     sum+=s+"";
     b=false;
    }*/
   }
  }
  else
  {
   int[] in3=new int[list2.size()];
   for(int i=0;i<list2.size();i++)
   {
    //int
   }
  }
  
}
public List<Integer> intChange(int[] in)
{
  List<Integer> list=new ArrayList<Integer>();
  for(int i=0;i<in.length;i++)
  {
   list.add(in);
  }
  return list;
}
public int[] strChange(String str)
{
  
  byte[] bb=str.getBytes();
  int aa[] = new int[bb.length];
  for(int i=0;i<bb.length;i++)
  {
   aa=Integer.parseInt(""+(bb-48));
   System.out.print(aa+"\t");
  }
  return aa;
}
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  OneAddOne oo=new OneAddOne();
  oo.getResult();
  //System.out.println(oo.strChange("123321"));
}
}
回复

使用道具 举报

 楼主| 发表于 2008-6-19 21:39:36 | 显示全部楼层
大概1000位吧,这样挺多,计算器是算不出来的,感觉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入驻

本版积分规则

QQ|Archiver|手机版|小黑屋|思明论坛

GMT+8, 2024-11-22 10:28 , Processed in 0.053180 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表