trick:

1、前导0

如:000001,000.000001

2、出现0时也要按照科学计数法输出

e.g. 4 00000.00000 0001

NO 0.0000*10^0 0.1*10^1

3、小于0.1的情况 0.00000001

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char s1[105],s2[105];
char a1[105],a2[105];
int n;
int main()
{
int n,i,l1,l2,p1=0,p2=0,flag=0,t,cnt,ls1,ls2;
while(~scanf("%d %s %s",&n,s1,s2))
{
p1=ls1=0;
l1=strlen(s1);
for (;ls1<l1;++ls1)
{
if(s1[ls1]=='.')
p1=ls1;//点位置
else if (s1[ls1]!='0')
break;
}
if(ls1==l1){//为0
// sprintf(a1,"0");
a1[0]='0',a1[1]='.',t=2;
for (i=0;i<n;++i)
a1[t++]='0';
sprintf(a1+t,"*10^0");
}
else{
a1[0]='0',a1[1]='.',t=2;
if (p1==0)//此为大于1的数
{
for (p1=ls1;p1<l1&&s1[p1]!='.';++p1);
for(i=ls1,cnt=0;i<l1&&cnt<n;++i)
if(s1[i]!='.'){
a1[t++]=s1[i];
cnt++;
}
while(cnt<n){
a1[t++]='0';
cnt++;
}
sprintf(a1+t,"*10^%d",p1-ls1);
}
else{//此为小于1的数
for(i=ls1,cnt=0;i<l1&&cnt<n;++i)
if(s1[i]!='.'){
a1[t++]=s1[i];
cnt++;
}
while(cnt<n){
a1[t++]='0';
cnt++;
}
sprintf(a1+t,"*10^%d",-(ls1-p1-1));
}
} p2=ls2=0;
l2=strlen(s2);
for (;ls2<l2;++ls2)
{
if(s2[ls2]=='.')
p2=ls2;//点位置
else if (s2[ls2]!='0')
break;
}
if(ls2==l2){//
a2[0]='0',a2[1]='.',t=2;
for (i=0;i<n;++i)
a2[t++]='0';
sprintf(a2+t,"*10^0");
}
else{
a2[0]='0',a2[1]='.',t=2;
if (p2==0)//此为大于1的数
{
for (p2=ls2;p2<l2&&s2[p2]!='.';++p2);
for(i=ls2,cnt=0;i<l2&&cnt<n;++i)
if(s2[i]!='.'){
a2[t++]=s2[i];
cnt++;
}
while(cnt<n){
a2[t++]='0';
cnt++;
}
sprintf(a2+t,"*10^%d",p2-ls2);
}
else{//此为小于1的数
for(i=ls2,cnt=0;i<l2&&cnt<n;++i)
if(s2[i]!='.'){
a2[t++]=s2[i];
cnt++;
}
while(cnt<n){
a2[t++]='0';
cnt++;
}
sprintf(a2+t,"*10^%d",-(ls2-p2-1));
}
}
if (strcmp(a1,a2)==0)
printf("YES %s\n",a1);
else
printf("NO %s %s\n",a1,a2);
}
return 0;
}
//4 000.001001 10.01
//3 00000.00001 1.00001

pat 1060 比较科学计数法的更多相关文章

  1. PAT乙级 1024. 科学计数法 (20)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  2. PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)

    1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...

  3. PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...

  4. PAT B1024/A1073 科学计数法

    书中AC代码 #include <cstdio> #include <cstring> #include <iostream> #include <cmath ...

  5. PAT乙级 1024 科学计数法

    思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...

  6. PAT 甲级 1060 Are They Equal (25 分)(科学计数法,接连做了2天,考虑要全面,坑点多,真麻烦)

    1060 Are They Equal (25 分)   If a machine can save only 3 significant digits, the float numbers 1230 ...

  7. PAT甲题题解-1060. Are They Equal (25)-字符串处理(科学计数法)

    又是一道字符串处理的题目... 题意:给出两个浮点数,询问它们保留n位小数的科学计数法(0.xxx*10^x)是否相等.根据是和否输出相应答案. 思路:先分别将两个浮点数转换成相应的科学计数法的格式1 ...

  8. C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解

    版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...

  9. PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)

    1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...

随机推荐

  1. linux查询系统负载

    linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息.uptime命令过去只显示系统运行多久.现在,可以显示系统已经运行了多长时间,信息显示依次为:现在时间.系统已经运行 ...

  2. 在 Pandas 中更改列的数据类型

    import pandas as pd import numpy as np a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0' ...

  3. MySQL 事物的隔离级别(简要)

    事务的隔离级别 为什么  引入了 事务隔离级别?? 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 更新丢失两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的 ...

  4. python 对字典"排序"

    对字典进行排序?这其实是一个伪命题,搞清楚python字典的定义---字典本身默认以key的字符顺序输出显示---就像我们用的真实的字典一样,按照abcd字母的顺序排列,并且本质上各自没有先后关系,是 ...

  5. redis修改密码

    ## 无需添加密码参数 redis-cli.exe -h 127.0.0.1 -p 6379 ## 获取当前密码 config get requirepass ## 设置当前密码,服务重新启动后又会置 ...

  6. ubuntu16.04服务器apache的ssl证书配置

    背景:在腾讯云申请的免费证书1年,服务器ubuntu 16.04版本,我的是多域名 1.ssl模块的安装 sudo a2enmod ssl //开启apache ssl模块 a2ensite defa ...

  7. 【扩展欧几里得】codevs1200-同余方程

    [题目大意] 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. [思路] 求解ax+by=1,只要x<0就不断加上 b. #include<iostream> #i ...

  8. python 中__name__ = '__main__' 的作用,到底干嘛的?

    python 中__name__ = 'main' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and execu ...

  9. Jmeter实现对mysql的增、删、改、查

    1.          创建一个存储过程,语句如下: DELIMITER $$; DROP PROCEDURE IF EXISTS test; create PROCEDURE test() BEGI ...

  10. 如何添加mysql到环境变量

    环境: 在自己安装的lampp环境下,当使用mysql的时候必须指定路径才能进入数据库:这样显得太过麻烦.我们可以通过将mysql加入到环境变量中来解决该问题(mysql执行路径/opt/lampp/ ...