思路:
对于这种坑爹模拟题,小心各种坑点即可。
容易Wa的两组数据:
0.0000007e2==0.00007
3.0e1=3
Ac代码:
#include<stdio.h>
#include<string.h>
using namespace std;
char a[100000];
char ans[100000];
int main()
{
while(~scanf("%s",a))
{
int i;
int n=strlen(a);
for(i=0;i<n;i++)
{
if(a[i]=='e')break;
}
int tmp=0;
for(int j=i+1;j<n;j++)
{
tmp=tmp*10+a[j]-'0';
}
int judge=0;
if(a[0]!='0')
{
printf("%c",a[0]);
judge=1;
}
if(a[0]=='0'&&tmp==0)
{
printf("%c",a[0]);
judge=1;
}
int cont=2;
while(1)
{
if(a[cont]=='e')cont++;
if(tmp==0)break;
if(cont>i)printf("0");
else
{
if(judge==0&&a[cont]=='0')
{
cont++;
tmp--;
continue;
}
judge=1;
printf("%c",a[cont]);
}
cont++;
tmp--;
}
if(cont<i)
{
if(judge==0)printf("0");
int judge2=0;
for(int j=cont;j<i;j++)
{
if(a[j]!='0')judge2=1;
}
if(judge2==0)
{
printf("\n");
continue;
}
printf(".");
for(int j=cont;j<i;j++)
{
printf("%c",a[j]);
}
}
printf("\n");
}
}