Codeforces Round #339 (Div. 2) B.Gena's Code

来源:互联网 发布:淘宝企业店铺 天猫 编辑:程序博客网 时间:2024/06/04 19:59

链接:http://codeforces.com/contest/614/problem/B

题意:给定定义漂亮数:十进制表示下只有数字1和0,且最多只有一个1。给定一个n,接下来给n个数,题目保证这n个数中至少n-1个漂亮数,求这n个数的乘积。

分析:找出那唯一的漂亮数或者判断出没有漂亮数,然后计算所有漂亮数对答案贡献有多少个0。如果有0这个数,显然答案为0,,否则为唯一的漂亮数+0...0或者1+0...0。

代码:

#include<map>#include<set>#include<cmath>#include<queue>#include<math.h>#include<cstdio>#include<vector>#include<string>#include<cstring>#include<iostream>#include<algorithm>#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;const int N=200100;const int MAX=151;const int MOD=1000000007;const int MOD1=100000007;const int MOD2=100000009;const int INF=2100000000;const double EPS=0.00000001;typedef long long ll;typedef unsigned long long ull;int read(){    int x=0,f=1;char ch=getchar();    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}    return x*f;}int a[N],b[N];char s[N];int main(){    int i,j,k,n,l,w,len,sum=0,bo=0;    scanf("%d", &n);    getchar();gets(s);    len=strlen(s);s[len]=' ';    l=0;k=0;w=0;    for (i=1;i<=len;i++)    if (s[i]!=' ') continue ;    else {        k++;a[k]=l;b[k]=i-1;l=i+1;        if (s[a[k]]=='0') { bo=1;break ; }        int flag=1;        if (s[a[k]]!='1') flag=0;        for (j=a[k]+1;j<=b[k];j++)        if (s[j]!='0') flag=0;        if (!flag) w=k;        if (w!=k) sum+=b[k]-a[k];    }    if (bo) printf("0\n");    else {        if (w==0) {            printf("1");            for (i=1;i<=sum;i++) printf("0");            printf("\n");        } else {            for (i=a[w];i<=b[w];i++) printf("%c", s[i]);            for (i=1;i<=sum;i++) printf("0");            printf("\n");        }    }    return 0;}


0 0
原创粉丝点击