Integer Inquiry--POJ 1503

1、题目类型:大数加法。

2、解题思路:水题。

3、注意事项:STL中reverse的巧用,加法进位的处理。

4、实现方法:(C++)

  
    
#include < iostream >
#include
< string >
#include
< algorithm >
using namespace std;

string ADD( string str1, string str2)
{
int i,a,b,c,tmp = 0 ;
int len1 = str1.length();
int len2 = str2.length();
int len = len1 > len2 ? len2:len1;
bool Max_len = len1 > len2 ? 1 : 0 ;
string str = "" ;
for (i = 0 ;i < len;i ++ )
{
a
= str1[i] - ' 0 ' ;
b
= str2[i] - ' 0 ' ;
c
= a + b + tmp;
tmp
= c / 10 ;
c
= c % 10 ;
str
+= c + ' 0 ' ;
}
if (Max_len)
{
for (;i < len1;i ++ )
{
a
= str1[i] - ' 0 ' ;
c
= tmp + a;
tmp
= c / 10 ;
c
= c % 10 ;
str
+= c + ' 0 ' ;
}
}
else
{
for (;i < len2;i ++ )
{
a
= str2[i] - ' 0 ' ;
c
= tmp + a;
tmp
= c / 10 ;
c
= c % 10 ;
str
+= c + ' 0 ' ;
}
}
if (tmp > 0 )
str
+= tmp + ' 0 ' ;
return str;
}

int main()
{
int i,cnt = 0 ;
string str,Arr[ 110 ];
while (cin >> str)
{
if (str == " 0 " )
break ;
reverse(str.begin(),str.end());
Arr[cnt
++ ] = str;
}
string ans = "" ;
for (i = 0 ;i < cnt;i ++ )
{
ans
= ADD(ans,Arr[i]);
}
reverse(ans.begin(),ans.end());
cout
<< ans << endl;
return 1 ;
}

5、实现方法:(Java)

  
    
import java.util. * ;
import java.math. * ;

public class Main
{
public static void main(String[] args)
{
Solve slv
= new Solve();
slv.Do();
}
}

class Solve
{
BigInteger sum
= BigInteger.ZERO;
void Do()
{
Scanner cin
= new Scanner(System.in);

while (cin.hasNext())
{
BigInteger n
= cin.nextBigInteger();
sum
= sum.add(n);
if (n.compareTo(BigInteger.ZERO) == 0 )
break ;
}
System.out.println(sum);
}
}

 

你可能感兴趣的:(Integer)