I AM GETTING WA , I HAVE READ OTHER FORMS AND IT DIDNT HELP
Blockquote
#include
#define ll long int
using namespace std;
int main(){
int t=10;
while(t–){
string total,k;
cin>>total;
cin>>k;
//total=2x+k
string sub="";
string a=total,b=k;
ll n1=a.length(),n2=b.length();
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
ll i,carry=0;
for(i=0;i<n2;i++){
ll sum =((a[i]-‘0’)-(b[i]-‘0’)-carry);
if(sum<0){sum=sum+10;carry=1;}
else
carry=0;
sub.push_back(sum+‘0’);
}
for(;i<n1;i++){
ll sum=((a[i]-‘0’)-carry);
if(sum<0){
sum=sum+10;carry=1;
}
else
carry=0;
sub.push_back(sum+‘0’);
}
reverse(sub.begin(),sub.end());
//div
string ans="";
int div=2;
ll temp=sub[0]-‘0’;i=0;
while(temp<div){
temp=temp10+sub[++i]-‘0’;
}
i++;
for(;i<sub.length();i++){
ll d=temp/div;
ans.push_back(d+‘0’);
temp=(temp%div)*10+(sub[i]-‘0’);
}
ll d=temp/div;
ans.push_back(d+‘0’);
//add
string a1=ans,a2=k;string kl="";
n1=a1.length();n2=a2.length();
if(n1<n2){swap(a1,a2);
swap(n1,n2);
}
reverse(a1.begin(),a1.end());
reverse(a2.begin(),a2.end());
carry=0;
for(i=0;i<n2;i++){
ll sum=(a1[i]-‘0’)+(a2[i]-‘0’)+carry;
if(sum>=10){
sum=sum%10;
carry=1;
}
else
carry=0;
kl.push_back(sum+‘0’);
}
for(;i<n1;i++){
ll sum=(a1[i]-‘0’)+carry;
if(sum>=10){
sum=sum%10;
carry=1;
}
else
carry=0;
kl.push_back(sum+‘0’);
}
reverse(kl.begin(),kl.end());
cout<<kl<<"\n";
cout<<ans<<"\n";
}
}
created
last reply
- 3
replies
- 842
views
- 2
users