微软买书问题
1.算法思想
先用枚举法把依次把每种情况从大到小写出来,结果就会发现到8的时候情况就发生变化,以10为1个轮回,除10取余。
2.代码
#include<iostream> using namespace std; #define N 100 int n; void main() { cout << "请输入你要购买的书的数目:"; cin >> n; int i,j; i = n % 10; j = (n - i) / 10; if (i == 8) { if (j == 0) { cout << "应该购买5卷中任意4卷,每卷" << 2 << "本"; } else { cout << "先买5种不同的卷各" << 2 * j << "本,再挑4种不同的卷每卷" << 2 << "本"; } } else if (i == 0) { cout << "应该购买5卷,每卷" << 2*j << "本"; } else if (i == 1) { if (j == 0) { cout << "应该购买5卷中任意1卷"<< 1 << "本"; } else { cout << "先买5种不同的卷各" << 2 * j << "本,再购买5卷中任意1卷" << 1 << "本"; } } else if (i == 2) { if (j == 0) { cout << "应该购买5卷中任意2卷每卷" << 1 << "本"; } else { cout << "先买5种不同的卷各" << 2 * j<< "本,再购买5卷中任意2卷每卷" << 1 << "本"; } } else if (i == 3) { if (j == 0) { cout << "应该购买5卷中任意3卷每卷" << 1 << "本"; } else { cout << "先买5种不同的卷各" << 2 * j << "本,再购买5卷中任意3卷每卷" << 1 << "本"; } } else if (i == 4) { if (j == 0) { cout << "应该购买5卷中任意4卷每卷" << 1 << "本"; } else { cout << "先买5种不同的卷各" << 2 * j << "本,再购买5卷中任意2卷每卷" << 1 << "本"; } } else if (i == 5) { if (j == 0) { cout << "应该购买5卷每卷" << 1 << "本"; } else { cout << "买5种不同的卷各" << 2 * j +1<< "本"; } } else if (i == 6) { if (j == 0) { cout << "应该购买5卷每卷" << 1 << "本,再任意购买1卷1本"; } else { cout << "先买5种不同的卷各" << 2 * j +1<< "本,再任意购买1卷1本"; } } else if (i == 7) { if (j == 0) { cout << "应该购买5卷每卷" << 1 << "本,再任意购买2卷每卷1本"; } else { cout << "先买5种不同的卷各" << 2 * j + 1 << "本,再任意购买2卷每卷1本"; } } else if (i == 9) { if (j == 0) { cout << "应该购买5卷每卷" << 1 << "本,再任意购买4卷每卷1本"; } else { cout << "先买5种不同的卷各" << 2 * j + 1 << "本,再任意购买4卷每卷1本"; } } }
3.程序截图