Code: Select all
got ac
Moderator: Board moderators
Code: Select all
got ac
Your outputInput
2147483647 * 1
2147483647 + 1
0 * 1000000000000
2147483648 * 0
Output
2147483647 * 1
2147483647 + 1
result too big
0 * 1000000000000
second number too big
2147483648 * 0
first number too big
Code: Select all
2147483647 * 1
2147483647 + 1
result too big
0 * 1000000000000
second number too big
result too big
2147483648 * 0
first number too big
result too big
Code: Select all
Accepted !!
Code: Select all
Accepted !!
Code: Select all
finally....
Code: Select all
1073741824 + 0
1073741824 * 2
Code: Select all
1073741824 + 0
1073741824 * 2
result too big
Code: Select all
erased
Code: Select all
9999999999999999999999999 * 01
Code: Select all
9999999999999999999999999 * 01
first number too big
result too big
Code: Select all
/*
*/
//2,147,483,647
#include<iostream>
#include<string.h>
#include <algorithm>
#include<sstream>
#include <iostream>
#include<cstdio>
#define D(x) cout<<#x<<" is "<<x<<endl;
using namespace std;
bool b1,b2,r;
bool Bignum(string t)
{
reverse(t.begin(),t.end());
if(t.length()<10) return 0;
if(t.length()>10)
for(int i=10;i<t.length();i++)
if(t[i]!='0') return 1;
int s[15];
for(int i=0;i<10;i++)
s[i]=(int)t[i]-48;
if(s[9]>2) return 1;
if(s[9]<2) return 0;
else
{
if(s[8]>1) return 1;
if(s[8]<1) return 0;
else
{
if(s[7]>4) return 1;
if(s[7]<4) return 0;
else
{
if(s[6]>7) return 1;
if(s[6]<7) return 0;
else
{
if(s[5]>4) return 1;
if(s[5]<4) return 0;
else
{
if(s[4]>8) return 1;
if(s[4]<8) return 0;
else
{
if(s[3]>3) return 1;
if(s[3]<3) return 0;
else
{
if(s[2]>6) return 1;
if(s[2]<6) return 0;
else
{
if(s[1]>4) return 1;
if(s[1]<4) return 0;
else
{
if(s[0]>7) return 1;
else
return 0;
}
}
}
}
}
}
}
}
}
}
bool add(string s1,string s2)
{
if(b1==1 || b2==1) return 1;
int s[12];
memset(s,0,sizeof(s));
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
for(int i=0;i<10;i++)
{
if(s1.length()>=i+1 && s2.length()>=i+1) s[i]=(int)s1[i]-48+(int)s2[i]-48;
else if(s1.length()>=i+1 && s2.length()<i+1) s[i]=(int)s1[i]-48;
else if(s1.length()<i+1 && s2.length()>=i+1) s[i]=(int)s2[i]-48;
}
for(int i=0;i<10;i++)
if(s[i]>9)
{
s[i+1]+=s[i]/10;
s[i]%=10;
}
if(s[10]!=0) return 1;
if(s[9]>2) return 1;
if(s[9]<2) return 0;
else
{
if(s[8]>1) return 1;
if(s[8]<1) return 0;
else
{
if(s[7]>4) return 1;
if(s[7]<4) return 0;
else
{
if(s[6]>7) return 1;
if(s[6]<7) return 0;
else
{
if(s[5]>4) return 1;
if(s[5]<4) return 0;
else
{
if(s[4]>8) return 1;
if(s[4]<8) return 0;
else
{
if(s[3]>3) return 1;
if(s[3]<3) return 0;
else
{
if(s[2]>6) return 1;
if(s[2]<6) return 0;
else
{
if(s[1]>4) return 1;
if(s[1]<4) return 0;
else
{
if(s[0]>7) return 1;
else
return 0;
}
}
}
}
}
}
}
}
}
}
/*
1: 10 | 10 | 1~9
2: 1~9 | 10 | 10
*/
bool mul(string s1,string s2)
{
int t=0;
for(int i=0;i<s1.length();i++)
if(s1[i]=='0') t++;
if(t==s1.length()) return 0;
t=0;
for(int i=0;i<s2.length();i++)
if(s2[i]=='0') t++;
if(t==s2.length()) return 0;
if(b1==1 || b2==1) return 1;
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
int n1[12],n2[12],s[25],i1,i2;
memset(n1,0,sizeof(n1));
memset(n2,0,sizeof(n2));
memset(s,0,sizeof(s));
for(int i=0;i<10;i++)
if(i<s1.length())
{
n1[i]=(int)s1[i]-48;
if(n1[i]!=0) i1=i;
}
for(int i=0;i<10;i++)
if(i<s2.length())
{
n2[i]=(int)s2[i]-48;
if(n2[i]!=0) i2=i;
}
for(int i=0;i<=i2;i++)
for(int j=0;j<=i1;j++)
s[j+i]=n2[i]*n1[j];
for(int i=0;i<10;i++)
if(s[i]>9)
{
s[i+1]+=s[i]/10;
s[i]%=10;
}
for(int i=10;i<=23;i++)
if(s[i]!=0) return 1;
if(s[9]>2) return 1;
if(s[9]<2) return 0;
else
{
if(s[8]>1) return 1;
if(s[8]<1) return 0;
else
{
if(s[7]>4) return 1;
if(s[7]<4) return 0;
else
{
if(s[6]>7) return 1;
if(s[6]<7) return 0;
else
{
if(s[5]>4) return 1;
if(s[5]<4) return 0;
else
{
if(s[4]>8) return 1;
if(s[4]<8) return 0;
else
{
if(s[3]>3) return 1;
if(s[3]<3) return 0;
else
{
if(s[2]>6) return 1;
if(s[2]<6) return 0;
else
{
if(s[1]>4) return 1;
if(s[1]<4) return 0;
else
{
if(s[0]>7) return 1;
else return 0;
}
}
}
}
}
}
}
}
}
}
int main()
{
string line;
string num1,num2;
char op;
while(getline(cin,line))
{
cout<<line<<endl;
istringstream in(line);
in>>num1;
in>>op;
in>>num2;
b1=0;b2=0;r=0;
b1=Bignum(num1);
b2=Bignum(num2);
if(b1==1) cout<<"first number too big"<<endl;
if(b2==1) cout<<"second number too big"<<endl;
if(op=='+') r=add(num1,num2);
if(op=='*') r=mul(num1,num2);
if(r==1) cout<<"result too big"<<endl;
}
return 0;
}