解题思路
1.首先我们可以看的出来这一道题是需要递归出来的,每一次的换汽水都要除三,一次一次的除下去,直到余下来的瓶数不够换成一瓶汽水(除去剩余两瓶汽水的情况)
下面就是代码了:
#include <iostream>
#include <stdlib.h>
int qishui(int n)
{
int hands, sum = 0; //这个表示一开始拥有多少个空瓶子
hands = n;
while(hands >= 2)
{
if (hands == 2) // 给老板要的那一瓶
{
sum++;
break;
}
int b = hands % 3; // 这个是换完以后手里剩下的
int a = hands / 3; // 这个是这一次换的汽水数
sum += a; // 累加表示换得汽水的总数
hands = b + a;
}
return sum;
}
using namespace std;
int main()
{
int n, a[10] = {0};
for (int i = 0; i < 10; i++)
{
cin >> a[i];
if (a[i] == 0)
{
break;
}
}
for (int i = 0; i < 10; i++)
{
if (a[i] != 0)
{
cout << qishui(a[i]) << endl;
}
}
system("pause");
return 0;
}