谁能告诉我怎么做,计算机的,说呀
[发帖际遇]: 原始人的奔跑请朋友们喝酒, 用了现金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 发表 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"));
}
} 大概1000位吧,这样挺多,计算器是算不出来的,感觉
页:
[1]