Original title for Huawei
#include int Add (int A, int b) {INT i = 0, j = 0, c = 0; for (i = 0, j = 0; i <31; i) {IF (((A & 1) & (B & 1)) | ((A & 1) & (j)) | ((B & 1) & (j))) {IF ((A & 1) & (B & 1) & J) C | = 0x40000000; J = 1;} else {IF ((A & 1) | (B & 1) | J) c | = 0x40000000; J = 0;}} (i <30) {c >> = 1; a >> = 1; b >> = 1;}} a >> = 1; b >> = 1; if (j ^ (a & 1) ^ (b & 1)) c | = 0x80000000; Return C;} int SUB (Int A, int b) {Return Add (A, Add (~ B, 1));} int Mul (int A, int b) {int Sign = ((A & 0x80000000) ^ (B & 0x80000000)) >> 31) & 0x00000001; if (a <0) a = Add (~ a, 1); if (b <0) b = add (~ b, 1); INT C = 0; While (B> 0) {IF (B & 1) {c = add (c, a) ; b = SUB (b, 1);} else {a << = 1; b >> = 1;}} if (sIGN) c = add (~ c, 1); Return C;} Void Div (INT A , INT B) {Int Sign = ((A & 0x80000000) ^ (B & 0x80000000)) >> 31) & 0x00000001; IF (a <0) A = add (~ a, 1); if (b <0) b = addd (~ B, 1); IF (Sign && A! = 0) Printf ("-"); INT i = 0; while (a> = b) {a = SUB (A, B); i = add (i , 1);} Printf ("% D", I); if (a! = 0) {Printf ("."); A = mul (a, 10); i = 0; While (a> = b) {A = SUB (a, b); i = add (i, 1);} printf ("% d", i);}}