usaco Name That Number
为什么要使用如此反人类的输入方式。
/* ID: modengd1 PROG: namenum LANG: C++ */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *in = fopen ("namenum.in", "r"); FILE *in2 = fopen ("dict.txt", "r"); FILE *out = fopen ("namenum.out","w"); int nsolutions = 0; int numlen; char input[20]; char dict[20]; char map[256]; int i, j; map['A'] = map['B'] = map['C'] = '2'; map['D'] = map['E'] = map['F'] = '3'; map['G'] = map['H'] = map['I'] = '4'; map['J'] = map['K'] = map['L'] = '5'; map['M'] = map['N'] = map['O'] = '6'; map['P'] = map['R'] = map['S'] = '7'; map['T'] = map['U'] = map['V'] = '8'; map['W'] = map['X'] = map['Y'] = '9'; fscanf(in,"%s",input); int l1=strlen(input); bool finD=false; while(~fscanf(in2,"%s",dict)) { int i; int l2=strlen(dict); if(l1!=l2) continue; for( i=0;i<l2;i++) { if(input[i]!=map[dict[i]]) break; } if(i==l2) { fprintf (out, "%s\n", dict); finD=true; } } if(!finD) fprintf(out,"NONE\n"); return 0; }