1826: 伟大先知的教导
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 17 Solved: 0
Submit Status Web Board
Description
编写一个c/c++程序的过程大致如下:
1. 在文本编辑器中编辑(edit)代码,得到.c/.cpp的源文件
2. 将上步得到的文件通过编译器编译(compile)获得源代码,之后与所需的库代码链接(link)起来得到.exe的可执行文件
3. 运行(run)上步得到的可执行文件,查看运行结果
4. 如果运行过程中出现错误或未知中断,可能需要用调试器进行调试(debug),直到获得正确结果
那么现在我们来考虑在Windows或者Linunx环境下的情况,每一步我们可以选用不同的软件来完成任务。比较知名的文本编辑器有Vim(编辑器之神)、Emacs(神之编辑器)、sublime text 2/3(史上最优雅的编辑器)、Geany(我编不下去)等等,编译器和调试器可以选用MinGW中集成的gcc、g++和gdb。当然,也可以采用集成开发环境(IDE,Integrated Development Environment)进行编程,比如Code::Blocks、Visual Studio 2013/2015、Dev-Cpp等等。
看完上面资料之后,我们可以发现在ACM这种分秒必争的激烈比赛中,采用IDE是一种高速且有效的编程方式。所以,伟大的先知(也是编程鬼才)Zhourist曾经教导过我们“等他们配置好Vim,我早就用Code::Blocks抢到一血了!!!”
不幸地是,某些比赛中主办方可能不会提供IDE(众所周知大部分IDE属于商业软件)。我们也可以采用Vim(因为Vim是Linux中的标配)和MinGW来编写程序。讲了那么多,我们又发现在一个新的环境中,快速寻找到合适的编程软件是多么重要。接下来的问题是如何查看一台电脑的桌面中有没有Code::Blocks或Vim。并按Output中的描述输出结果
Input
输入第一行为一个数字n,n代表测试数据组数(n<=50)。
之后每组测试数据第一行为一个数字m,m代表桌面中图标的行数(m<=10)。
接下来每一行为一串字符,代表桌面对应行图标,且长度小于1000。字符串中包含一些英文单词,每一个单词代表桌面中的一个软件名(不含扩展名),每一个单词中间用空格隔开,且长度小于50。
每一组测试数据代表一台电脑的桌面,你的任务是寻找这个桌面中有没有Code::Blocks或Vim(严格区分大小写,符号为半角符号),并按要求输出结果。
Output
对于每组数据,按下面描述输出结果。
如果可以找到Code::Blocks和Vim,请输出“I can find Code::Blocks and Vim!!!”(不包含引号,下同)。
如果只能找到Code::Blocks,请输出“I can find Code::Blocks!!”。
如果只能找到Vim,请输出“I can find Vim!”。
否则,请输出“Are you kidding me?”
每两组数据中输出一个空行,没有多余空行。
Sample Input
Sample Output
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[15][1010];
char ss[5000][100];
char a[]={"Code::Blocks"};
char b[]={"Vim"};
int main()
{
int t,n,i,j,k,kk;
scanf("%d",&t);
while(t--)
{
memset(ss,'\0',sizeof(ss));
memset(s,'\0',sizeof(s));
scanf("%d",&n);
getchar();
k=0;
for(i=0;i<n;i++)
gets(s[i]);
k=-1;kk=0;
for(i=0;i<n;i++)
{
int l=strlen(s[i]);
k++;kk=0;
for(j=0;j<l;j++)
{
if(s[i][j]==' '&&s[i][j-1]!=' '&&s[i][j+1]!=' '&&s[i][0]!=' ')
{
k++;
kk=0;
}
else
{
ss[k][kk++]=s[i][j];
}
}
}
int aa=0,bb=0;
for(i=0;i<=k;i++)
{
if(ss[i][0]=='C'||ss[i][0]=='V')
{
if(strcmp(a,ss[i])==0)
aa=1;
if(strcmp(b,ss[i])==0)
bb=1;
if(aa&&bb)
break;
}
}
if(aa&&bb)
printf("I can find Code::Blocks and Vim! ! !\n");
else if(aa&&!bb)
printf("I can find Code::Blocks ! !\n");
else if(!aa&&bb)
printf("I can find Vim!\n");
else
printf("Are you kidding me?\n");
printf("\n");
}
return 0;
}