zoukankan      html  css  js  c++  java
  • uva424 高精度计算

    题意是计算各长整数的和,最多输入100个数,每个数都是正整数且位数不超过100.

    很明显100位的数用数组存会方便许多,然后设置两个整型数组,一个存进位,一个存结果。为了对齐进行运算,我将所有的数先逆序调整,即低位在前高位在后,这样运算就能保证对齐运算了。总体来说难度很小,需要细心,争取一次AC!

    #include<iostream>
    #include<cstring>
    using namespace std;
    char input[101][101];
    int convert(int size)
    {
    	int maxn=0;
    	for (int i=0;i<size;i++)
    	{
    		int len=strlen(input[i]);
    		if (len>maxn) maxn=len;
    		for (int j=0;j<len/2;j++)
    		{
    			char tmp=input[i][j];
    			input[i][j]=input[i][len-1-j];
    			input[i][len-1-j]=tmp;
    		}
    	}
    	return maxn;
    }
    int main()
    {
    	int line=0;
    	while(cin>>input[line]&&input[line][0]!='0')
    	{
    		line++;
    	}
    	int carry[102]={0};
    	int maxsize=convert(line);
    	int result[105];
    	for (int i=0;i<maxsize;i++)
    	{
    		int sum=0;
    		for (int j=0;j<line;j++)
    		{
    			if (input[j][i]=='') input[j][i]='0';
    			sum=sum+int(input[j][i]-'0');
    		}
    		sum=sum+carry[i];
    		result[i]=sum%10;
    		carry[i+1]=sum/10;
    	}
    	result[maxsize]=carry[maxsize];
    	
    	for (int j=0;j<(maxsize+1)/2;j++)
    		{
    			int tmp=result[j];
    			result[j]=result[maxsize-j];
    			result[maxsize-j]=tmp;
    		}
    	for (int i=0;i<=maxsize;i++)
    	{
    		if (i==0&&result[i]==0) continue;
    		cout<<result[i];
    	}
    	cout<<endl;
    	return 0;
    }


  • 相关阅读:
    【面向对象-天龙八部】
    【面向对象-作业】
    【OOP】面向对象的程序开发
    nmcli命令详解(创建热点,连接wifi,管理连接等)
    构造函数&&继承8.1
    Set集合之TreeSet类
    Set集合之HashSet类
    HDFS上传数据的流程
    zookeeper的安装与配置
    hive介绍、安装配置、表操作基础知识适合小白学习
  • 原文地址:https://www.cnblogs.com/riasky/p/3363625.html
Copyright © 2011-2022 走看看