1. 程式人生 > >學姐出的水題

學姐出的水題

題目描述

王欣欣覺得自己太胖了,決定去跑步鍛鍊身體,但是他不喜歡彎道,所以他找了一段筆直的路來回跑,他的目標是跑k趟(來算一趟,回算一趟),這段路的長度為a米,王欣欣的初始體力值為b,他每跑1米需要消耗1體力,這段路中點即a/2處有個休息站,他可以在這休息到體力值恢復。王欣欣想要知道他最少休息多少次能完成他跑k趟的目標
輸入
第一行輸入一個T表示有T(T<=1000)組測試資料,每組包括3個數a(a是偶數 ),b,k,分別表示這段路起點到終點的長度,初始體力值和跑的目標趟數( 0 < a ≤ 10^6, 1 ≤ b ≤ 10^9, 2 ≤ k ≤ 10^4)
輸出
輸出能完成目標的最少休息次數,如果不存在則輸出-1
樣例輸入
2
2 9 7
8 7 2
樣例輸出
1
-1

分析:

本題我們可以分情況考慮,當k為1的時候和當k不為1的時候。然後需要注意的就是,當k
不為1的時候。b的值一定不能下雨a。否則就是輸出-1。

#include"stdio.h"

int main()
{
    long long t,a,b,k,b1,x,y,z;
    long long i,j,l,count;
    x=0;
    y=-1;
    z=1;
    while(~scanf("%lld",&t))
    {
        while(t--)
        {  count=0;
            scanf("%lld%lld%lld",&a,&b,&k);

            b1=b;
            if(k==1)
              {
                  if(b>=a)
                    {printf("%lld\n",x);
                     continue;
                    }
                  else
                  if(b>=a/2)
                    {
                        printf("%lld\n",z);
                        continue;
                    }
                 else
                   {
                       printf("%lld\n",y);
                       continue;
                   }

              }
              if(b<a)
                  {
                      printf("%lld\n",y);
                      continue;
                  }

            for(i=1;i<k;i++)
            {
                b=b-a/2;
                if(b<a)
                 {
                     count++;
                     b=b1;
                 }

                 b=b-a/2;



            }


                if(b>=a)
                  {
                      printf("%lld\n",count);
                      continue;
                  }
                else
                 {
                     count++;
                     printf("%lld\n",count);
                     continue;
                 }


        }
    }
}