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]+, ...
随机推荐
- js判断一个字符串是否是数字
function isNumber(val) { var regPos = /^\d+(\.\d+)?$/; //非负浮点数 var regNeg = /^(-(([0-9]+\.[0-9]*[1-9 ...
- VMware安装CentOS7教程
首先安装VM,VM破解版和激活版的百度有很多,随意下载一个 下载CentOS7 地址1:https://mirrors.btte.net/centos/7/isos/x86_64/ 地址2:http: ...
- 线段树-最小逆序数hdu1394
title: 线段树-最小逆序数 date: 2018-10-12 17:19:16 tags: acm 算法 刷题 categories: ACM-线段树 概述 这是一道简单的线段树的题,,,当然还 ...
- Java反射机制demo(五)—获得并调用一个类中的方法
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和 ...
- Eclipse导入SVN项目的三种方式
Eclipse导入SVN项目的三种方式 一.直接Import导入: 1.点击 File --> Import,进入导入项目窗口 2.选择从SVN检出项目,点击Next 3.选择创建新的资源库位置 ...
- string rune byte 的关系
在Go当中 string底层是用byte数组存的,并且是不可以改变的. 例如 s:="Go编程" fmt.Println(len(s)) 输出结果应该是8因为中文字符是用3个字节存 ...
- CF597C Subsequences 树状数组 + 动态规划
设$f(i, j)$表示以$i$结尾的,长为$j$的上升子序列的数量 转移时用树状数组维护即可 复杂度为$O(kn \log n)$ 注:特判0 #include <cstdio> #in ...
- (Nginx和PHP下)URL重写,TP实现URL重写
UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址. 优点 一:提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话 ...
- bzoj 2300 动态维护上凸壳(不支持删除)
新技能GET. 用set保存点,然后只需要找前趋和后继就可以动态维护了. /************************************************************** ...
- 洛谷OJ P2356 弹珠游戏 维护前缀和
题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...