原始人的奔跑 发表于 2008-6-19 21:22:46

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

[发帖际遇]: 原始人的奔跑请朋友们喝酒, 用了现金22思明币.


实现1000位的正整数加法。即a、b都是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
       首先是4与8相加得到2并进位
       然后是7与1相加得到9(加上进位)
       然后是6与6相加得到2并进位
       然后是5与4相加得到0(加上进位)
       然后是1加上进位得到2
       于是得到新的数组20292,即是结果

yellowen 发表于 2008-6-19 21:24:18

要精确到多少位
飞龙

原始人的奔跑 发表于 2008-6-19 21:38:29

原帖由 yellowen 于 2008-6-19 21:24 发表 http://172.16.1.236/images/common/back.gif
要精确到多少位
飞龙 我卡在进位那里,我写到:
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;
   boolean[] flag=new boolean;
   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;
   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;
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位吧,这样挺多,计算器是算不出来的,感觉
页: [1]
查看完整版本: 谁能告诉我怎么做,计算机的,说呀