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;
    }


  • 相关阅读:
    Kotlin之类属性延迟初始化
    Android 之ANR
    Android之Handler基础篇
    Android Handler进阶篇
    Android 进程与线程管理
    Android 启动模式LaunchMode详解(LaunchMode四种模式详解)
    Android 应用版本号配置修改
    Android ViewGroup
    Android app与Activity主题配置
    Android 本地序列化
  • 原文地址:https://www.cnblogs.com/riasky/p/3363625.html
Copyright © 2011-2022 走看看