2 / 4
Nov 2018

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=temp
10+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

    Nov '18
  • last reply

    Nov '18
  • 3

    replies

  • 841

    views

  • 2

    users

No need to cross post, once will do.

The code doesn’t compile.

prog.cpp: In function ‘int main()’:
prog.cpp:14:26: error: ‘reverse’ was not declared in this scope
reverse(a.begin(),a.end());

prog.cpp:39:6: error: ‘temp10’ was not declared in this scope
temp=temp10+sub[++i]-‘0’;

i used #include<bits/stdc++.h>
i compiled and said wa
#include <bits/stdc++.h>
#define ll long int
using namespace std;
int main(){
int t=10;
while(t–){
string total,k;
cin>>total;
cin>>k;
if(total==“0”&&k==“0”)cout<<‘0’<<"\n"<<‘0’<<"\n";
else{
//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=temp
10+sub[++i]-‘0’;
}
while (sub.size() > i)
{
ans += (temp / div) + ‘0’;
temp = (temp % div) * 10 + sub[++i] - ‘0’;
}
if (ans.length() == 0)
ans=“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";

}
}

}

Still no need to cross post.

I realised the “temp10” the compiler complained about should be “temp*10”, (If you don’t enquote the post properly, then all sorts of things get changed or go missing.)

Try this test case:

20
2