pat 1060 比较科学计数法
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 比较科学计数法的更多相关文章
- PAT乙级 1024. 科学计数法 (20)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT乙级 1024. 科学计数法 (20)(未通过全部测试,得分18)
1024. 科学计数法 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 HOU, Qiming 科学计数法是科学家用来表示很 ...
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- PAT B1024/A1073 科学计数法
书中AC代码 #include <cstdio> #include <cstring> #include <iostream> #include <cmath ...
- PAT乙级 1024 科学计数法
思路 1.尝试失败:一开始想打算把结果直接存在一个字符串中,后来发现当指数大于0的时候还需要分别考虑两种情况,工程量巨大,尝试失败,于是借鉴了其他大佬思路,写出了ac代码 2.ac思路:首先取指数的绝 ...
- 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 ...
- PAT甲题题解-1060. Are They Equal (25)-字符串处理(科学计数法)
又是一道字符串处理的题目... 题意:给出两个浮点数,询问它们保留n位小数的科学计数法(0.xxx*10^x)是否相等.根据是和否输出相应答案. 思路:先分别将两个浮点数转换成相应的科学计数法的格式1 ...
- C#版 - PAT乙级(Basic Level)真题 之 1024.科学计数法转化为普通数字 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. PAT Bas ...
- PAT 1024 科学计数法 (20)(精简版代码+思路+推荐测试样例)
1024 科学计数法 (20)(20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+, ...
随机推荐
- Mac 上自带TFTP Server 软件的使用
搬瓦工搭建SS教程 1.TFTP协议 简单文件传输协议Trivial File Transfer Protocol (TFTP)是一个基于UDP协议的简单的.低开销的文件传输协议,允许客户端get或者 ...
- windows svn 客户端连不上linux svn server
采坑记录:linux服务器上svn://127.0.0.1可以正常使用,windows客户端远程连接不上,说明是端口号的问题. linux正常配置了iptables开启了3690端口,连接不上. 干脆 ...
- weighttp 使用
Weighttp 地址 http://redmine.lighttpd.net/projects/weighttp/wiki Weighttp的介绍:weighttp is a lightweigh ...
- bzoj1477 poj1061 青蛙的约会
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- Codeforces Round #352 (Div. 2) B. Different is Good 水题
B. Different is Good 题目连接: http://www.codeforces.com/contest/672/problem/B Description A wise man to ...
- Charles基本使用—http抓包、手机抓包、数据篡改
本文主要介绍如下内容: 1.Charles如何抓取HTTP报文 2.Charles如何抓取手机上的HTTP包 3.使用Charles篡改数据信息 一.Charles抓取HTTP包 1.Charles的 ...
- 二值化方法:Kittler:Minimum Error Thresholding
Kittler二值化方法,是一种经典的基于直方图的二值化方法.由J. Kittler在1986年发表的论文“Minimum Error Thresholding”提出.论文是对贝叶斯最小错误阈值的准则 ...
- Oracle VM VisualBox 虚拟机创建共享文件夹。
先来啰嗦几句,公司的电脑用的是 VMware10的虚拟机 相信大家都很熟悉了 VMware 创建共享文件功能可以直接安装tools来实现 但是 Oracle VM VisualBox 第一次玩 ...
- 连接本地websocket服务延迟的问题
今天用C#编写了一个Chrome Remote Debugger的客户端程序,发现使用rest和websocket程序时第一次连接的时候特别慢,大概每次都要消耗一秒左右,而用chrome直接连接却没有 ...
- MyBatis接口的简单实现原理
MyBatis接口的简单实现原理 用过MyBatis3的人可能会觉得为什么MyBatis的Mapper接口没有实现类,但是可以直接用? 那是因为MyBatis使用Java动态代理实现的接口. 这里仅仅 ...