zoj_1292 Integer Inquiry(大数相加)

1 , 使用java解决 

直接调用java提供的大数处理的类就行了。最后直接用System.out.println()输出。


import java.math.BigInteger;
import java.util.Scanner;

public class zoj_1292 
{
 public static void main(String[] args) 
 {
   Scanner sc = new Scanner(System.in);
   BigInteger a=BigInteger.valueOf(0);
   BigInteger b=BigInteger.valueOf(0);

   while(sc.hasNext())
   {
    int n;
    n = sc.nextInt();
    for(int i=0;i<n;i++)
     { if(i!=0) System.out.println(); 
      while(true)
     {
      a=sc.nextBigInteger();
      if(a.compareTo(BigInteger.valueOf(0))==0) break;
      b=b.add(a);
     }
     System.out.println(b);
    }
   }
}
}


2, 整体思路,由于读入的大数的位数都一样,所以可以使读入的每一个大数的相同位相加。最后再考虑进位。整体思路是对的。。而且在vc上也是对的,但是wa。。受不鸟
       这里对c++输入输出不太了解的可以看看这个 http://see.xidian.edu.cn/cpp/biancheng/view/116.html


#include<stdio.h>  
#include<string.h>  
#include<iostream>  
using namespace std;  
  
char a[100];  
int res[105]={0};  
  
int main()  
{  
    int n ,i ,j;  
    int length;  
    cin>>n;  
    getchar();  
    for(i=0;i<n;i++)  
    {  
        
        while(1)  
        {     
            scanf("%s" ,a);
            length=strlen(a);
		
            if(length==1&&a[0]=='0')  
            {  
                break;  
            }  
            else  
            {  
                for(i=0;i<length;i++)  
		{
                  res[i]+=a[length-1-i]-'0';  
				
		}
            }  
        }  
  
        //进位  
        for(i=0;i<105;i++)  
        {  
            res[i+1]+=res[i]/10;  
            res[i]=res[i]%10;  
		
        }  
  
        //输出  
        for(i=105;i>0;i--)  
        {  
            if(res[i]!=0)  
            {  
                for(j=i;j>=0;j--)  
                   cout<<res[j];  

		cout<<endl;//表示输出一个回车,并flash缓冲区。
                 
                break;  
            }  
        }  
      
	if(i!=n-1)  
            cout<<endl; 	
    }  
      
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值