牛客网华为机试链接
1 汽水瓶
算法思路:
- 如果n=3那么就可以换一瓶汽水,n=3的倍数可以每3瓶换一瓶汽水,如果是6瓶就可以换1+1+1(最后一个1是向老板借一个瓶子喝完后再还给老板),如果是9瓶就可以换1+1+1+1,如果是12瓶就可以换1+1+1+1+1+1…,如果是15瓶,可以换15/3=5,5/2=2,换5+2瓶。
- 当n>=3时,每3瓶汽水换一瓶,n = 汽水喝完后的瓶子数+没能换汽水的瓶子数,继续计算直到n<3。
- 如果n=2那么就可以向老板借一个瓶子,喝完后再还给老板
- 输出结果
- PS:其实从1中可以总结出一个规律,即最后喝到的汽水瓶数是最初拥有的瓶子数/2取整,因为每2个瓶子就能换到一瓶汽水
#include <iostream>
using namespace std;
//方法一
int main() {
int n;
while(cin>>n){
if(n == 0){
break;
}
int result = 0;
while(n >= 3){
result += n / 3;
n = n / 3 + n % 3;
}
if(n == 2){
result++;
}
cout<<result<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
#include <iostream>
using namespace std;
//方法二
int main() {
int n;
while(cin>>n){
if(n == 0){
break;
}
cout<<n/2<<endl;
}
return 0;
}
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
whil