Day 0x2 UVa11150 Cola

题意

  • 3瓶可乐换一瓶,可和朋友借一瓶 (需还),问买 N 瓶共能喝到多少瓶?

    题目故意讲了两种方法超混乱,但其实就是问第二种换法而已 ==

  • 需要注意的有:
    1. 重复输入
    2. 每行输入一整数

解法

  • 既是重复输入,又没给测资数,潜规则就是 EOF
  • 输入的数不大,用 int 即可
  • 一开始买多少 = 喝多少,又喝多少便产生多少空瓶,所以 Coke_sum & Coke_empty 初始化为输入数
    while(scanf("%d", &Coke) != EOF){
            Coke_sum = Coke;
            Coke_empty = Coke;
    }
    
  • 只要空瓶大於等於 3 即可兑换可乐,用回圈重复检查,叠加喝掉的瓶数 空瓶 / 3 = 兑换量,且兑换多少即产生多少空瓶,加上没兑换到的空瓶,更新空瓶为 空瓶 / 3 + 空瓶 % 3
    while(Coke_empty >= 3){
        Coke_sum = Coke_sum + (Coke_empty / 3);
        Coke_empty = (Coke_empty / 3) + (Coke_empty % 3);
    }
    
  • 跳出回圈後即可输出结果,但因为若空瓶为 2,可和朋友借一空瓶凑成 3 瓶去兑换,喝完再归还空瓶。可透过伟大且神奇的除法来达成这项检查
    // 意同:
    // Coke_sum = (Coke_empty == 2) ? Coke_sum + 1 : Coke_sum;
    // printf("%d\n", Coke_sum);
    printf("%d\n", Coke_sum + Coke_empty / 2);
    
  • C Code ver. 1
#include<stdio.h>

int main(){

    int Coke;
    int Coke_sum;
    int Coke_empty;

    while(scanf("%d", &Coke) != EOF){

        Coke_sum = Coke;
        Coke_empty = Coke;

        while(Coke_empty >= 3){
            Coke_sum = Coke_sum + (Coke_empty / 3);
            Coke_empty = (Coke_empty / 3) + (Coke_empty % 3);
        }

        printf("%d\n", Coke_sum + Coke_empty / 2);
    }

    return 0;
}

公式解

  • 世界真神奇之妙妙公式解

  • 因为题目只有说可借,没规定何时借 & 借多少,透过借空瓶的漏洞,就能不要脸多借一点!
    一开始购买後,将可乐分成两两一组,每组各借一个空瓶,全部喝完 + 兑换後便归还剩余空瓶数

    ◆:满瓶 ◇:空瓶,以 N = 8 为例:

    购买:◆◆◆◆◆◆◆◆
    分组:◆◆ ◆◆ ◆◆ ◆◆
    借瓶:◆◆◇ ◆◆◇ ◆◆◇ ◆◆◇
    喝掉:◇◇◇ ◇◇◇ ◇◇◇ ◇◇◇
    兑换:◆ ◆ ◆ ◆
    喝掉:◇ ◇ ◇ ◇
    归还:

  • 用结论来解释
    喝掉 = 购入 × 1.5
    简单地展开後
    喝掉 = 购入 + 购入 ÷ 2
    购入:就是一开始输入的购买可乐数,同上所述,购买便喝掉
    购入 ÷ 2:两瓶一组,共多少组

  • C Code ver. 2

#include<stdio.h>

int main(){

    int n;

    while(scanf("%d", &n) != EOF){
        printf("%d\n", n * 3 / 2);
    }

    return 0;
}

<<:  DAY3 MongoDB 连线与 IDE

>>:  [Day3] Flutter - 改变容器风格 ( Container )

【Day 21】整合

今天讲甚麽 今天不讲技术,讲讲打满二十天给我的心得。 二十天说长不长,说短不短。原本以为自己把参赛的...

[day12]Heroku 基本使用

如果你有自己的固定IP,可以在本机进行部署,或着使用免费版本的Heroku Platform在云端建...

D29 - 热点

分散式资料库理论上会把业务的loading平均分布到各个node上。但是仍有可能因为业务逻辑或者资料...

【D17】杂谈:版本与Github找不到资料

今天发现了一些现象,所以就不先探索程序码,讲讲看到的状况。 首先是版本的问题。一直觉得说明文件事不是...

day3: 程序码的命名 (component, className)

在 react 的命名原则中,除了 component 和 type 是 Pascal Case,其...