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");
    }
}
发布了50 篇原创文章 · 获赞 0 · 访问量 595

猜你喜欢

转载自blog.csdn.net/zpf1998/article/details/104240884