保龄求助!好像是第一判断有问题
  • 板块P3692 夏幻的考试
  • 楼主卷王慢即快
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/1/17 21:06
  • 上次更新2023/10/24 03:47:55
查看原帖
保龄求助!好像是第一判断有问题
494699
卷王慢即快楼主2023/1/17 21:06
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int T, n, xlen, ans;
string s, x;
char a1, a2;
string an[57];
inline int num_check(string a)
{
	int len = a.size();
	if(len != 16) return -1;
	if(a[0] == '1' || a[1] == '1') return -1;
	int num = 0;
	for(int i = 0; i < len; i++)
		if(a[i] == '1') num += pow(2, len - i - 1);
	return num;
}
inline int type_check(char a, char b)
{
	if(a == '1' && x[xlen - 1] == '0') return 1;
	if(b == '1' && x[xlen - 1] == '1') return 1;
	return -1;
}
int main()
{
	cin >> T >> n;
	getchar();
	cin >> s;
	while(T--)
	{
		bool flag = 0;
		double score = 0;
		cin >> x;
		xlen = x.size();
		
		ans = num_check(x);
		if(ans == -1 || ans == 0)
		{
			cout << "Wrong ID" << endl;
			flag = 1;
		}
		else cout << "ID: " << ans << endl;
		
		cin >> a1 >> a2;
		
		if(!flag)
		{
			ans = type_check(a1, a2);
			if(ans == -1)
			{
				cout << "Type Incorrect" << endl;
				//不要加continue!不要加continue!不要加continue!!!! 
			}
			else cout << "Type Correct" << endl;
		}
		
		getchar();
		for(int i = 0; i < n; i++)
		{
			cin >> an[i];
			int cnt = 0;
			for(int j = 0; j < an[i].size(); j++)
				if(an[i][j] == '1') cnt++;
			if(cnt > 1) an[i] = "0000";
		}
		
		//计算score 
		if(!flag)
		{
			double one = 100.0 / n;
			for(int i = 0; i < n; i++)
				if(an[i][s[i] - 'A'] == '1') score += one;
			printf("%.1lf\n", score);
		}
		
		if(T >= 1) cout << endl;
	}
}
2023/1/17 21:06
加载中...