uva-465

来源:互联网 发布:360彩票源码 编辑:程序博客网 时间:2024/05/01 03:35
注意int型所能表示的最大的数
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define maxn 100050using namespace std;string s;int map[maxn];void input(){    while(getline(cin,s))    {        memset(map,0,sizeof(map));        int len=s.length();        string s1="",s2="",s3="";        int i,j,k;        for( i=0;i<len;i++)        {            if(s[i]==' ')break;            s1+=s[i];        }        s1[i]='\0';        s2+=s[i+1];s2[1]='\0';        for(j=i+3,k=0;j<len;j++,k++)        s3+=s[j];        s3[k]='\0';        reverse(s1.begin(),s1.end());        reverse(s3.begin(),s3.end());        long long max=2147483647,ans=0;        cout<<s<<endl;        for(int i=0;i<s1.length();i++)        {            ans+=(s1[i]-'0')*pow(10,i);            if(ans>max){cout<<"first number too big"<<endl;break;}        }        ans=0;        for(int i=0;i<s3.length();i++)        {            ans+=(s3[i]-'0')*pow(10,i);            if(ans>max){cout<<"second number too big"<<endl;break;}        }        if(s2[0]=='*')        {            for(int i=0;i<s1.length();i++)            {                for(int j=0;j<s3.length();j++)                {                    map[i+j]+=(s1[i]-'0')*(s3[j]-'0');                }            }        }        else if(s2[0]=='+')        {            for(int i=0;i<s1.length();i++)            map[i]+=s1[i]-'0';            for(int i=0;i<s3.length();i++)            map[i]+=s3[i]-'0';        }        int p;        for( p=maxn-1;p>=0;p--)        {            if(map[p]!=0)break;        }        ans=0;        for(int i=0;i<=p;i++)        {            ans+=map[i]*pow(10,i);            if(ans>max){cout<<"result too big"<<endl;break;}        }    }}int main(){    input();    return 0;}

原创粉丝点击