| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么我的代码用G++交可以过用c++交不能过?/*
author: TangQiao , Wind @ Beijing Normal University
problem name: Bullshit Bingo
source : PKU Online Judge
problem type: 字符串处理题
problem description: 以BULLSHIT为界,找出每组中不重复的字符串的个数,最后输出
各组和 / 组数.要求约分.
problem solution: 模拟找就行了.
faults: 当前此题的代码只能在G++的编译器下提交通过.具体原因不明.
date : 2005.7.10 北大个人赛
*/
#include <stdio.h>
#include <string.h>
char ss[910][50];
int match[50000000];
int n_match=0;
void output(int a,int b)
{
int i;
int min;
min=a>b?b:a;
if (min==0)
printf("%d / %d\n",a,b);
else
{
for (i=min;i>=2;i--)
if (a%i==0 && b%i==0)
{
a/=i;
b/=i;
i++;
}
printf("%d / %d\n",a,b);
}
}
main()
{
int i,j;
char in[30], ch;
int head;
int num;
int over;
char bb[30];
// freopen("bingo.in", "r", stdin);
num=0;
head=0;
over=0;
//strcpy(in,kong);
memset(in,0,sizeof(in));
memset(bb,0,sizeof(bb));
strcpy(bb,"BULLSHIT");
while (scanf("%c", &ch)!=EOF)
{
// if (ch>='a' && ch<='z')
// ch+='A'-'a';
if ((ch>='A' && ch<='Z' ) || (ch>='a' && ch<='z'))
{
in[head++]=ch;
}
else
{
if (head!=0)
{
in[head]=0;
num++;
strcpy(ss[num],in);
if (strcmp(in,bb)==0) over=1;
// strcpy(in,kong);
memset(in,0,sizeof(in));
head=0;
}
}
if (over)
{
num--;
over=0;
n_match++;
match[n_match]=num;
for (i=1;i<=num;i++)
{
int len;
len=strlen(ss[i]);
for (j=0; j < len; j++)
if (ss[i][j]>='a' && ss[i][j]<='z')
ss[i][j]+=('A'-'a');
}
for (i=1;i<num;i++)
{
for (j=i+1;j<=num;j++)
if (strcmp(ss[i],ss[j])==0)
{
match[n_match]--;
break;
}
}
num=0;
head=0;
}
} // end of while
if (head!=0)
{
in[head]=0;
num++;
strcpy(ss[num],in);
if (strcmp(in,bb)==0) over=1;
// strcpy(in,kong);
memset(in,0,sizeof(in));
head=0;
}
if (over)
{
num--;
over=0;
n_match++;
match[n_match]=num;
for (i=1;i<num;i++)
{
for (j=i+1;j<=num;j++)
if (strcmp(ss[i],ss[j])==0)
{
match[n_match]--;
break;
}
}
num=0;
head=0;
}
for (i=1,j=0;i<=n_match;i++)
{
j+=match[i];
// printf("num:%d tot=%d\n", i, match[i]);
}
output(j,n_match);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator