模拟题;
比赛的时候忘记把1变成64位的1了,跪了好久;
1 #include<cstdio> 2 #include<cstring> 3 #include<map> 4 #include<string> 5 using namespace std; 6 7 unsigned long long val[250]; 8 int num[250]; 9 map<string,int>mp; 10 char s[100]; 11 char jkl[111]; 12 int main() 13 { 14 int d,b,v; 15 while(scanf("%d%d",&b,&v)!=EOF) 16 { 17 mp.clear(); 18 for(int i=0;i<v;i++) 19 { 20 val[i]=0; 21 num[i]=0; 22 } 23 for(int i=0;i<v;i++) 24 { 25 scanf("%s",s); 26 scanf("%d",&d); 27 mp[s]=i; 28 num[i]=d; 29 } 30 gets(jkl); 31 int q; 32 char w; 33 for(int i=0;i<v;i++) 34 { 35 unsigned long long tmp=0; 36 for(int j=num[i]-1;j>=0;j--) 37 { 38 for(int k=b-1;k>=0;k--) 39 { 40 w=getchar(); 41 if(w=='1') 42 tmp+=((unsigned long long)1)<<(j*b+k); 43 } 44 gets(jkl); 45 } 46 val[i]=tmp; 47 } 48 scanf("%d",&q); 49 gets(jkl); 50 while(q--) 51 { 52 scanf("%s",s); 53 if(mp.find(s)==mp.end())printf("%s= ",s); 54 else printf("%s=%llu ",s,val[mp[s]]); 55 } 56 } 57 return 0; 58 }