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]+, ...
随机推荐
- php匹配邮箱正则
php匹配邮箱正则 '/[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+/is'
- Spark入门3(累加器和广播变量)
一.概要 通常情况下,当向Spark操作传递一个函数时,它会在一个远程集群节点上执行,它会使用函数中所有变量的副本.这些变量被复制到所有的机器上,远程机器上并没有被更新的变量会向驱动程序回传.在任务之 ...
- chrome安装(sentos7)
在服务器上安装chrome是用来模拟浏览器抓取数据的. 直接 yum install chrome是安装不了的 你要做以下几步就可以了. 配置yum源 1. vim /etc/yum.repos.d/ ...
- 【我要学python】面向对象系统学习
第一节:初识类的定义和调用 c1.py #类 = 面向对象 #类 最基本作用:封装 #类中不仅可以定义变量 还可以定义函数等等,例: class student( ): name = ' ' age ...
- 浅谈 Java 中的枚举
枚举也就是一一列举,常用来表示那些可以明确范围的集合,比方说性别,季节,星期,月份等. 在 JDK 1.5 才出现枚举类,在没有出现枚举类之前,我们要表示几个确定的值通常会使用常量来表示,形如 pub ...
- 【数论】Codeforces Round #483 (Div. 2) [Thanks, Botan Investments and Victor Shaburov!] C. Finite or not?
题意:给你一个分数,问你在b进制下能否化成有限小数. 条件:p/q假如已是既约分数,那么如果q的质因数分解集合是b的子集,就可以化成有限小数,否则不能. 参见代码:反复从q中除去b和q的公因子部分,并 ...
- 【POJ】1835:宇航员【模拟】【三维行走】
宇航员 Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 7228 Accepted: 3050 Description 问 ...
- php 获取所有常量
有的时候想得到某个完整路径,看看都定义了哪些常量,可以这样做,即把所有的常量都打印出来,然后看看有没有自己想要的,感觉挺方便 官方给的原型: array get_defined_constants ( ...
- C#高级编程9-第3章 对象与类型
类与结构 类和结构都是对象的模板 类定义了处理和访问数据的方法,通过类的实例化进行逻辑处理 类与结构的区别是类是引用类型,存储在托管堆上:结构是值类型,存储在栈上的: 类使用class进行修饰,结构使 ...
- Git提交空文件夹的技巧
这个只能说是技巧不能说是方法,原理是在每个空文件夹新建一个.gitignore文件,然后提交. 快捷命令: find . -type d -empty -exec touch {}/.gitignor ...