我需要制作一个可以+, - ,*,/,%和^的C ++计算器。我根本不能在代码中使用+, - ,*,/和%。
#include<iostream>
using namespace std;
typedef long long ll;
ll add(ll a,ll b){
if(b==0)return a;
else return add(a^b,(a&b)<<1);
}
ll sub(ll a,ll b){
if(b==0)return a;
else return sub(a^b,((~a)&b)<<1);
}
这就是我所拥有的。我不知道如何编码乘法和除法部分。有什么帮助吗?
答案 0 :(得分:0)
ll mul(ll a,ll b){
if(b<0){
b=add(~b,1);
a=add(~a,1);
}
ll res=0;
while(b>0){
if(b&1)res=add(res,a);
a<<=1;
b>>=1;
}
return res;
}
ll div(ll a,ll b){
ll c=0,op=0;
if(a<0){
a=add(~a,1);
op^=1;
}
if(b<0){
b=add(~b,1);
op^=1;
}
if(b!=0){
while(a>=b){
a=sub(a,b);
c=add(c,1);
}
}
if(op)c=add(~c,1);
return c;
}
遵循您的代码格式,我希望此解决方案有所帮助! 在这里,我使用加法和减法来进行乘法和除法,使用更多的按位运算符(&amp;,|,^,〜,&lt;&lt;&gt;&gt;&gt;)。您也可以参考cplusplus.com阅读更多相关信息。所以在这种情况下你可以看到乘法,我把位移到左边,所以有点像把那些地方移到十位等等。如果你需要进一步澄清,请随时寻求帮助。 :)