因为工作太忙,好久没刷题了。今天刷题错成狗。。。无奈。。真的手生了
这道题就是让你把所有的数乘起来。美丽数的定义是像0,1,10,100,1000这样的数
且这道题只有一个不是美丽数
所有只需要把这道题后缀0统计出来就好了
题目链接
#include <iostream>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#define esp 1e-6
#define inf 0x0f0f0f0f
#define LL long long
using namespace std;
/************************************************
Desiner:hl
time:2016/02/04
Exe.Time:30 ms
Exe.Memory:1900 KB
题目链接:http://codeforces.com/contest/614/problem/B
题意:这道题就是让你把所有的数乘起来。美丽数的定义是像0,1,10,100,1000这样的数
题解:且这道题只有一个不是美丽数
所有只需要把这道题后缀0统计出来输出就好了
但是这道题非常容易超时。加了一个优化以后过的
************************************************/
int main(){
int i,j,k,l,m,n,zero;
bool iszero = false ,iscopy = false;
char start[1000005];
char a[1000005];
memset(start,'\0',sizeof(start));
scanf("%d",&n);
zero=0;
for(i=0;i<n;i++){
scanf("%s",a);
if(a[0]=='0'){
iszero = true;
break;
}
int len = strlen(a);
for(j=len-1;j>=0;j--){
//开始这里没加。超时了
if(iscopy){
zero += (len-1);
break;
}
if(a[j]=='0') zero++;
else if(a[j]=='1'&&j==0) break;
else{
iscopy =true;
strncpy(start,a,j+1);
break;
}
}
}
if(iszero){
printf("0\n");
return 0;
}
else{
if(iscopy){
printf("%s",start);
}else{
printf("1");
}
for(i=0;i<zero;i++){
printf("0");
}
printf("\n");
}
return 0;
}