Headshot UVA - 1636

问题

两个人玩俄罗斯转盘,已知子弹的排列,第一枪是空的,想要第二枪也是空的,应该怎么做?两种选择,SHOOT(顺序的下一颗弹舱)或者ROTATE(随机的一个弹舱),都一样的话输出EQUAL

分析

#include <cstring>
#include <cstdio>
#include <vector>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn=100+10;
const double eps=1e-6;
char ch[maxn];
int main(void){
    while(scanf("%s",ch)!=EOF){
        int len=strlen(ch),n0=0,n1=0;  //0和1的数量,加起来是总和
        int n=0;  //连续两次是空的情况数量
        for(int i=0;i<len;++i){
            if(ch[i]=='0') n0++;
            else n1++;
        }
        ch[len]=ch[0];
        for(int i=0;i<len;++i){
            if(ch[i]=='0' && ch[i+1]=='0') n++;
        }
        double ans1=(double)n0/len;  //rotate
        double ans2=(double)n/n0; // n:shoot
        if(ans1>ans2+eps) printf("ROTATE\n");
        else if(ans1<ans2-eps) printf("SHOOT\n");
        else printf("EQUAL\n");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值