USACO 1.2 Name That Number

 这个题真是无聊,今天做完CF,就在整这个题。。。开始理解错了题意了,发现给了一个文件的字典,文件的读入读出,早忘的差不多了,读出只能把一个字典,读成一个字符串,写了好长时间,改了N处,终于过了。。。做CF被虐爆,做这个更是被虐爆了。。。

 1 /*
 2 ID: cuizhe
 3 LANG: C++
 4 TASK: namenum
 5 */
 6 #include <iostream>
 7 #include <cstdio>
 8 #include <cstring>
 9 #include <cstdlib>
10 #include <map>
11 using namespace std;
12 char txt[10000000];
13 map<char,int>mm;
14 long long o[13];
15 int main()
16 {
17     int len,str,i,j,z;
18     long long n,sum;
19     FILE *fp;
20     char *q = txt;
21     freopen("namenum.in","r",stdin);
22     fp = fopen("dict.txt","r");
23     scanf("%lld",&n);
24     freopen("namenum.out","w",stdout);
25     fread(q,sizeof(txt),1,fp);
26     len = strlen(txt);
27     mm['A'] = 2;
28     mm['B'] = 2;
29     mm['C'] = 2;
30     mm['D'] = 3;
31     mm['E'] = 3;
32     mm['F'] = 3;
33     mm['G'] = 4;
34     mm['H'] = 4;
35     mm['I'] = 4;
36     mm['J'] = 5;
37     mm['K'] = 5;
38     mm['L'] = 5;
39     mm['M'] = 6;
40     mm['N'] = 6;
41     mm['O'] = 6;
42     mm['P'] = 7;
43     mm['R'] = 7;
44     mm['S'] = 7;
45     mm['T'] = 8;
46     mm['U'] = 8;
47     mm['V'] = 8;
48     mm['W'] = 9;
49     mm['X'] = 9;
50     mm['Y'] = 9;
51     str = 0;
52     z = 1;
53     o[1] = 1;
54     for(i = 2; i <= 12; i ++)
55         o[i] = o[i-1]*10;
56     for(i = 0; i <= len; i ++)
57     {
58         if(txt[i] == '\n')
59         {
60             sum = 0;
61             for(j = str; j <= i-1; j ++)
62             {
63                 sum += mm[txt[j]]*o[i-j];
64             }
65             if(sum == n)
66             {
67                 for(j = str; j <= i-1; j ++)
68                     printf("%c",txt[j]);
69                 printf("\n");
70                 z = 0;
71             }
72             str = i+1;
73         }
74     }
75     if(z)
76         printf("NONE\n");
77     return 0;
78 }
posted @ 2012-10-21 22:04  Naix_x  阅读(186)  评论(0编辑  收藏  举报