全红求助
查看原帖
全红求助
452531
cygnus_beta楼主2021/6/2 22:27

代码如下:

#include<iostream>
#include<cstdio>
#include<string>
#include<cmath>
using namespace std;

string num;
unsigned T,n,cnt,pos;
double result;
bool flag=false;
char ch[4],type[2];
char* ans;

unsigned two_ten(string n){
	unsigned ten=0;
	for(unsigned i=0;i<n.size();i++)ten+=(n[i]-'0')*pow(2,n.size()-i-1);
	return ten;
}

int main(){
	cin>>T>>n>>num;
	ans=new char[n];
	for(unsigned i=0;i<n;i++)ans[i]=num[i];
	for(unsigned i=0;i<T;i++){
		cin>>num;
		if(two_ten(num)>=1 and two_ten(num)<=10000)cout<<"ID:"<<two_ten(num)<<endl;
		else flag=true,cout<<"Wrong ID\n";
		cin>>type;
		if(not flag){
			if((type[0]-'0' and num[num.size()-1]=='0')or(type[1]-'0' and num[num.size()-1]=='1'))cout<<"Type Correct\n";
			else cout<<"Type Incorrect\n";
		}
		else cout<<endl;
		for(unsigned j=0;j<n;j++){
			cin>>ch;
			if(not flag){
				for(unsigned m=0;m<4;m++)if(ch[m]=='1')pos=m,cnt++;
				if(cnt==1 and pos+'A'==ans[j])result+=1.0/n*100;
				cnt=0;
			}
		}
		if(not flag)printf("%.1lf\n\n",result);
		else cout<<endl<<endl;
		flag=false;
		result=0;
	}
	delete ans;

	return 0;
}
2021/6/2 22:27
加载中...