zoukankan      html  css  js  c++  java
  • ZOJ 3948

    让我回想起了小学的时候,空瓶换饮料还能向别人借一个空瓶喝了再还回去的神奇问题……

    开始时思考,特判一下a=1或者b=1的情况为INF就可以了,然后发现2 2 1 2这样的样例也是能够喝到无穷多瓶饮料的。

    所以干脆直接做循环,每次循环模拟换了饮料然后喝掉的情形,如果发现喝完空瓶子不减少或者瓶盖子不减少,那显然是能喝不知道多少瓶饮料了,就直接输出INF。

     1 #include<cstdio>
     2 int x,y,a,b,cnt;
     3 bool flag;
     4 int main()
     5 {
     6     int t;
     7     scanf("%d",&t);
     8     while(t--)
     9     {
    10         scanf("%d%d%d%d",&x,&y,&a,&b);//x空瓶 or y瓶盖换满瓶 ; 现有a空瓶,b瓶盖 
    11         cnt=0;
    12         flag=1;
    13         while(a>=x || b>=y)
    14         {
    15             int now_a=a,now_b=b;
    16             if(a>=x)
    17             {
    18                 int c=a/x;
    19                 a=a%x+c;
    20                 b+=c;
    21                 cnt+=c;
    22             }
    23             if(b>=y)
    24             {
    25                 int c=b/y;
    26                 b=b%y+c;
    27                 a+=c;
    28                 cnt+=c;
    29             }
    30             if(a>=now_a && b>=now_b)
    31             {
    32                 printf("INF
    ");
    33                 flag=0;
    34                 break;
    35             }
    36         }
    37         if(flag) printf("%d
    ",cnt);
    38     }
    39 }
  • 相关阅读:
    训练网络考虑内容
    阿斯顿
    wifi 模块Yeelink联网
    fpga串口通信的verilog驱动
    vga显示彩条
    状态机之二段式
    矩阵键盘
    error
    时钟
    Error(10028)
  • 原文地址:https://www.cnblogs.com/dilthey/p/6837772.html
Copyright © 2011-2022 走看看