杭电2060

杭电2060的翻译如下:
当菲利普要放松一下自己的时候,他喜欢去玩QQ里的斯诺克游戏,虽然他还只是个小菜鸟。也许你还不知道这个游戏的规则,没关系,我会先为你介绍。一共有21个球在台面上,其中包括15个红球和6个彩球:黄、绿、褐、蓝、粉、黑。选手需要用一个白球来使这些球滚进洞里,那些球所代表的值的和就是他的得分。选手必须先把一个红球打进洞里,然后它得到红球相应的分值(1分),然后他就有一次机会去选择打一个彩球。在红球还未全部打进洞里之前,打进去的彩球需要重新拿出来。换句话说,也就是最后桌上将会只留下彩球。选手按下面的顺序来击球:黄(2分)、绿(3分)、褐(4分)、蓝(5分)、粉(6分)、黑(7分)。这时候把彩球打进洞里,它们不会被拿出来。当桌面上没有球留下的时候,比赛结束。分数高的选手获胜。PS:红球不会重新拿出。我仅仅只阐述了一下规则,如果你希望了解更多的资料,请浏览:http://sports.tom.com/snooker/

例如,桌台上还有12个红球(如果还有红球留在台面上,表示所有的彩球一定也都留在台面上)。我假设菲利普能继续击球,他能得到的最大分数是: 12 * 1(一次性打掉12个红球) + 7 * 12(每打完一个红球就打黑球) + 2 + 3 + 4 + 5 + 6 + 7(没有红球剩下时,就打所有的彩球)。现在,你的任务就是在菲利普告诉你现在台面上的情况(有多少个球还留在台面上)后判断一下他是否需要放弃这局比赛。如果他还有获胜的机会,就输出“Yes”,否则输出“No”。 (PS:如果他最大可能的得分加上现在的分数等于对手的分数,依然输出“Yes”)

此题是一道简单的数学应用题!!!可以分两种情况大于6和小于6讨论即可!呵呵!祝你成功AC!!

 

#include<iostream>
using namespace std;
int main()
{
 int n,a,b,c,i,sum,j;

     cin>>n;
    while(n--)
 {  
         sum=0;
  getchar();
  cin>>a>>b>>c;
  if(a>6)
   puts(b+(a-6)*(1+7)+27>=c?"Yes":"No");
  else
  { for(i=7,j=0;j<a;j++,i--)
    sum=sum+i;
            puts(b+sum>=c?"Yes":"No");}
   
 }
 return 0;
}

posted on 2012-10-10 19:42  @ 小浩  阅读(517)  评论(0编辑  收藏  举报