原题 要求在"dict.txt"文件中读取4617个名字。
它每次都输出NONE,不知道为什么。。。
代码不整洁请见谅!
/*
ID:tangjia14
TASK:namenum
LANG:C++
*/
#include<bits/stdc++.h>
#define LONG 4617
using namespace std;
int len(int a)
{
int count=1;
while(1)
{
if(a<10)
return count;
a/=10;
count++;
}
}
int top(int a)
{
while(1)
{
if(a<10)
return a;
a/=10;
}
}
int pow(int a,int b)
{
int ans=1;
for(int i=0;i<b;i++)
ans*=a;
return ans;
}
int main()
{
ifstream fin("namenum.in");
ifstream dict("dict.txt");
ofstream fout("namenum.out");
int n,m;
int count=0;
string name;
bool can[LONG];
fin>>n;
m=n;
for(int i=0;i<LONG;i++)
{
n=m;
can[i]=true;
dict>>name;
if(len(n)==name.size())
{
for(int j=0;j<len(n);j++)
{
if(!((top(n)==2&&name[j]>='A'&&name[j]<='C')||(top(n)==3&&name[j]>='D'&&name[j]<='F')||(top(n)==4&&name[j]>='G'&&name[j]<='I')||(top(n)==5&&name[j]>='J'&&name[j]<='L')||(top(n)==6&&name[j]>='M'&&name[j]<='O')||(top(n)==7&&name[j]>='P'&&name[j]<='S'&&name[j]!='Q')||(top(n)==8&&name[j]>='T'&&name[j]<='V')||(top(n)==9&&name[j]>='W'&&name[j]<='Y')))
{
can[i]=false;
break;
}
n-=top(n)*pow(10,len(n)-1);
}
}
}
for(int i=0;i<LONG;i++)
{
if(can[i])
{
if(count)
fout<<" ";
fout<<name;
count++;
}
}
if(count==0)
fout<<"NONE";
fout<<endl;
return 0;
}