#include <bits/stdc++.h>
using namespace std;
#define ll (long long)
#define pr printf
#define sc scanf
string a,b,c,d,e;
map<char,string> mp4;
map<char,string> mp4h;
map<char,string> mp8;
map<char,string> mp8h;
map<char,string> mp16;
map<char,string> mp16h;
struct node
{
string o,ns;
node(){
o=“”;
}
}ans[6];
bool cmp(node a,node b)
{
if(a.ns.size()!=b.ns.size())
{
return a.ns.size()>b.ns.size();
}
else
{
return a.ns>b.ns;
}
}
int main()
{
mp4[‘0’]=“00”;
mp4[‘1’]=“01”;
mp4[‘2’]=“10”;
mp4[‘3’]=“11”;
mp4h[‘0’]=“”;
mp4h[‘1’]=“1”;
mp4h[‘2’]=“10”;
mp4h[‘3’]=“11”;
mp8[‘0’]=“000”;
mp8[‘1’]=“001”;
mp8[‘2’]=“010”;
mp8[‘3’]=“011”;
mp8[‘4’]=“100”;
mp8[‘5’]=“101”;
mp8[‘6’]=“110”;
mp8[‘7’]=“111”;
mp8h[‘0’]=“”;
mp8h[‘1’]=“1”;
mp8h[‘2’]=“10”;
mp8h[‘3’]=“11”;
mp8h[‘4’]=“100”;
mp8h[‘5’]=“101”;
mp8h[‘6’]=“110”;
mp8h[‘7’]=“111”;
mp16[‘0’]=“0000”;
mp16[‘1’]=“0001”;
mp16[‘2’]=“0010”;
mp16[‘3’]=“0011”;
mp16[‘4’]=“0100”;
mp16[‘5’]=“0101”;
mp16[‘6’]=“0110”;
mp16[‘7’]=“0111”;
mp16[‘8’]=“1000”;
mp16[‘9’]=“1001”;
mp16[‘A’]=“1010”;
mp16[‘B’]=“1011”;
mp16[‘C’]=“1100”;
mp16[‘D’]=“1101”;
mp16[‘E’]=“1110”;
mp16[‘F’]=“1111”;
mp16h[‘0’]=“”;
mp16h[‘1’]=“1”;
mp16h[‘2’]=“10”;
mp16h[‘3’]=“11”;
mp16h[‘4’]=“100”;
mp16h[‘5’]=“101”;
mp16h[‘6’]=“110”;
mp16h[‘7’]=“111”;
mp16h[‘8’]=“1000”;
mp16h[‘9’]=“1001”;
mp16h[‘A’]=“1010”;
mp16h[‘B’]=“1011”;
mp16h[‘C’]=“1100”;
mp16h[‘D’]=“1101”;
mp16h[‘E’]=“1110”;
mp16h[‘F’]=“1111”;
// freopen(“1.txt”,“r”,stdin);
getline(cin,a);
getline(cin,b);
getline(cin,c);
getline(cin,d);
getline(cin,e);
ans[1].o=a;
ans[2].o=b;
ans[3].o=c;
ans[4].o=d;
ans[5].o=e;
// cout << “1”;
for(int i=a.size()-1; i >=0; i–)
{
if(i!=0)
{
ans[1].ns+=mp4[a[i]];
}
else
{
ans[1].ns+=mp4h[a[i]];
}
}
// cout << “2”;
for(int i=d.size()-1; i >=0; i–)
{
if(i!=0)
{
ans[4].ns+=mp8[d[i]];
}
else
{
ans[4].ns+=mp8h[d[i]];
}
}
// cout << “3”;
for(int i=e.size()-1; i >=0; i–)
{
if(i!=0)
{
ans[5].ns+=mp16[e[i]];
}
else
{
ans[5].ns+=mp16h[e[i]];
}
}
// cout << “4”;
ans[3].ns=c;
int ii=1;
int b1=0;
for(int i=0; i <= b.size()-1; i++)
{
b1*=10;
b1+=(b[i]-‘0’);
}
// cout << b1 << endl;
// cout << “5”;
while(ii<= b1)
{
ii*=2;
}
ii/=2;
while(b1>0)
{
if(b1>=ii)
{
b1-=ii;
ans[2].ns+=‘1’;
}
else
{
ans[2].ns+=‘0’;
}
ii/=2;
}
// cout << “6”;
sort(ans+1,ans+5+1,cmp);
for(int i=1; i <= 5; i++)
{
if(ans[i].o==a)
{
if(i<=3)
{
pr(“Welcome!\n”);
break;
}
if(ans[i].ns==ans[3].ns)
{
pr(“Welcome!\n”);
break;
}
pr(“Sorry.\n”);
break;
}
}
for(int i=1; i <= 5; i++)
{
cout << ans[i].o<<" ";
}
return 0;
}
1 个赞
把 cpp 点出来
2 个赞
#include <bits/stdc++.h>
using namespace std;
#define ll (long long)
#define pr printf
#define sc scanf
string a,b,c,d,e;
map<char,string> mp4;
map<char,string> mp4h;
map<char,string> mp8;
map<char,string> mp8h;
map<char,string> mp16;
map<char,string> mp16h;
struct node
{
string o,ns;
node(){
o="";
}
}ans[6];
bool cmp(node a,node b)
{
if(a.ns.size()!=b.ns.size())
{
return a.ns.size()>b.ns.size();
}
else
{
return a.ns>b.ns;
}
}
int main()
{
mp4['0']="00";
mp4['1']="01";
mp4['2']="10";
mp4['3']="11";
mp4h['0']="";
mp4h['1']="1";
mp4h['2']="10";
mp4h['3']="11";
mp8['0']="000";
mp8['1']="001";
mp8['2']="010";
mp8['3']="011";
mp8['4']="100";
mp8['5']="101";
mp8['6']="110";
mp8['7']="111";
mp8h['0']="";
mp8h['1']="1";
mp8h['2']="10";
mp8h['3']="11";
mp8h['4']="100";
mp8h['5']="101";
mp8h['6']="110";
mp8h['7']="111";
mp16['0']="0000";
mp16['1']="0001";
mp16['2']="0010";
mp16['3']="0011";
mp16['4']="0100";
mp16['5']="0101";
mp16['6']="0110";
mp16['7']="0111";
mp16['8']="1000";
mp16['9']="1001";
mp16['A']="1010";
mp16['B']="1011";
mp16['C']="1100";
mp16['D']="1101";
mp16['E']="1110";
mp16['F']="1111";
mp16h['0']="";
mp16h['1']="1";
mp16h['2']="10";
mp16h['3']="11";
mp16h['4']="100";
mp16h['5']="101";
mp16h['6']="110";
mp16h['7']="111";
mp16h['8']="1000";
mp16h['9']="1001";
mp16h['A']="1010";
mp16h['B']="1011";
mp16h['C']="1100";
mp16h['D']="1101";
mp16h['E']="1110";
mp16h['F']="1111";
// freopen("1.txt","r",stdin);
getline(cin,a);
getline(cin,b);
getline(cin,c);
getline(cin,d);
getline(cin,e);
ans[1].o=a;
ans[2].o=b;
ans[3].o=c;
ans[4].o=d;
ans[5].o=e;
// cout << "1";
for(int i=a.size()-1; i >=0; i--)
{
if(i!=0)
{
ans[1].ns+=mp4[a[i]];
}
else
{
ans[1].ns+=mp4h[a[i]];
}
}
// cout << "2";
for(int i=d.size()-1; i >=0; i--)
{
if(i!=0)
{
ans[4].ns+=mp8[d[i]];
}
else
{
ans[4].ns+=mp8h[d[i]];
}
}
// cout << "3";
for(int i=e.size()-1; i >=0; i--)
{
if(i!=0)
{
ans[5].ns+=mp16[e[i]];
}
else
{
ans[5].ns+=mp16h[e[i]];
}
}
// cout << "4";
ans[3].ns=c;
int ii=1;
int b1=0;
for(int i=0; i <= b.size()-1; i++)
{
b1*=10;
b1+=(b[i]-'0');
}
// cout << b1 << endl;
// cout << "5";
while(ii<= b1)
{
ii*=2;
}
ii/=2;
while(b1>0)
{
if(b1>=ii)
{
b1-=ii;
ans[2].ns+='1';
}
else
{
ans[2].ns+='0';
}
ii/=2;
}
// cout << "6";
sort(ans+1,ans+5+1,cmp);
for(int i=1; i <= 5; i++)
{
if(ans[i].o==a)
{
if(i<=3)
{
pr("Welcome!\n");
break;
}
if(ans[i].ns==ans[3].ns)
{
pr("Welcome!\n");
break;
}
pr("Sorry.\n");
break;
}
}
for(int i=1; i <= 5; i++)
{
cout << ans[i].o<<" ";
}
return 0;
}
1 个赞