C language: two programming and optimization methods; soda drinking
Method 1: Program:
# Include <stdio. h> int main () {int I = 0; // I indicates money int j = 0; // j indicates empty bottle int sum = 0; // sum total number of soda bottles scanf ("% d", & I); sum = I; j = I; while (j> = 2) {sum = sum + j/2; j = j % 2 + j/2;} printf ("% d \ n", sum); return 0 ;}
Method 2: (optimized) Program:
# Include <stdio. h> int main () {int I = 0; // I indicates money int j = 0; // j indicates empty bottle int sum = 0; // sum total number of soda bottles to drink scanf ("% d", & I); sum = 2 * I-1; // 20 bottles, assuming the last empty bottle, the boss borrows one, then you can drink 39 + 1 = 40 bottles // The principle is equivalent to drinking 20 bottles. Ask the boss to borrow 20 empty bottles and pay back after drinking them, drink 2*20 = 40 bottles. // In summary, if the last empty bottle is not lent, you can drink 2 * n-1 bottle printf ("% d \ n", sum ); return 0 ;}
Result: 2039 Press any key to continue