您的位置:首页 > 其它

USACO 1.2 Name That Number

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

/*
ID: cuizhe
LANG: C++
TASK: namenum
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <map>
using namespace std;
char txt[10000000];
map<char,int>mm;
long long o[13];
int main()
{
int len,str,i,j,z;
long long n,sum;
FILE *fp;
char *q = txt;
freopen("namenum.in","r",stdin);
fp = fopen("dict.txt","r");
scanf("%lld",&n);
freopen("namenum.out","w",stdout);
fread(q,sizeof(txt),1,fp);
len = strlen(txt);
mm['A'] = 2;
mm['B'] = 2;
mm['C'] = 2;
mm['D'] = 3;
mm['E'] = 3;
mm['F'] = 3;
mm['G'] = 4;
mm['H'] = 4;
mm['I'] = 4;
mm['J'] = 5;
mm['K'] = 5;
mm['L'] = 5;
mm['M'] = 6;
mm['N'] = 6;
mm['O'] = 6;
mm['P'] = 7;
mm['R'] = 7;
mm['S'] = 7;
mm['T'] = 8;
mm['U'] = 8;
mm['V'] = 8;
mm['W'] = 9;
mm['X'] = 9;
mm['Y'] = 9;
str = 0;
z = 1;
o[1] = 1;
for(i = 2; i <= 12; i ++)
o[i] = o[i-1]*10;
for(i = 0; i <= len; i ++)
{
if(txt[i] == '\n')
{
sum = 0;
for(j = str; j <= i-1; j ++)
{
sum += mm[txt[j]]*o[i-j];
}
if(sum == n)
{
for(j = str; j <= i-1; j ++)
printf("%c",txt[j]);
printf("\n");
z = 0;
}
str = i+1;
}
}
if(z)
printf("NONE\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: