要求:只能進行賦值,+1,固定次數的循環三種原子操作,只能操作0和正整數
簡單做個思路轉換即可。
#include <iostream>
using namespace std;
int my_add(int x, int y)
{
for(int i =0; i < y; i++) //加法,連續加1
x++;
return x;
}
int my_mul(int x, int y)
{
int rst = 0;
for(int i =0; i < y; i++) //乘法,連續加x
rst = my_add(rst, x);
return rst;
}
int my_sub(int x, int y)
{
for(int i = 0; i < x; i++, y++) //減法,連續加被減數至相等
{
if(y == x)
return i;
}
return x;
}
int my_div(int x, int y, int& r) //除法,連續減被除數至小於餘數
{
int ret = 0;
while(x >= y)
{
x = my_sub(x, y);
ret++;
}
r = x;
return ret;
}
int main()
{
cout << my_add(3, 4) << endl;
cout << my_mul(5, 8) << endl;
cout << my_sub(10, 8) << endl;
int r = 1;
int ret = my_div(33, 7, r);
cout << ret << " " << r << endl;
return 0;
}