1.题目描述:点击打开链接
2.解题思路:根据题意可知:直接在抠一枪相当于两次都是00序列,随机转一下再抠相当于是恰好遇到0,这样不难计算出这两者的概率。前者的是一个条件概率,等于00的个数除以00+01的个数;后者是0的比率。设00序列的个数是a(注意子弹是环形的,首尾也相当于连续),0的个数是b,串的长度是n,那么两个概率分别是a/b,b/n。因此最终比较a*n和b*b的大小即可。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; int main() { freopen("test.txt", "r", stdin); string s; while (cin >> s) { int a=0, b=0, n; n = s.length(); for (int i = 0; i < n;i++) if (s[i] == '0') b++; for (int i = 0; i < n;i++) if (s[i] == '0' && s[(i + 1)%n] == '0') a++; if (a*n>b*b)printf("SHOOT\n"); else if (a*n == b*b)printf("EQUAL\n"); else printf("ROTATE\n"); } return 0; }
原文地址:http://blog.csdn.net/u014800748/article/details/43941737