PAT甲题题解-1060. Are They Equal (25)-字符串处理(科学计数法)
又是一道字符串处理的题目。。。
题意:给出两个浮点数,询问它们保留n位小数的科学计数法(0.xxx*10^x)是否相等。根据是和否输出相应答案。
思路:
先分别将两个浮点数转换成相应的科学计数法的格式
1.point为小数点的索引,初始化为字符串的长度len
2.not0位第一个非0的数字的索引,初始化为len
如果not0为len,表明该浮点数为0,特殊处理,形式为0.0..0*10^0
否则根据point和not0的大小,计算相应的指数。
接着便是从str的not0开始,给ans赋值,共n位不包括小数点的数字,不足的最后补0即可。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
using namespace std;
const int maxn=;
char s1[maxn],s2[maxn];
int n; void solve(char*str,char*ans,int n,int &e){
int len=strlen(str);
int point=len; //小数点的索引
for(int i=;i<len;i++){
if(str[i]=='.'){
point=i;
break;
}
}
int not0=len; //第一个非0的索引
for(int i=;i<len;i++){
if(str[i]!='.' && str[i]!=''){
not0=i;
break;
}
}
//数字为0
if(not0==len){
e=;
ans[]='';
ans[]='.';
for(int i=;i<n;i++)
ans[+i]='';
ans[n+]='\0';
}
else{
e=point>not0?point-not0:point-not0+; //指数
ans[]='';
ans[]='.';
for(int i=,j=not0;i<n;i++,j++){
if(j<len){
if(str[j]!='.')
ans[+i]=str[j];
else
i--;
}
else
ans[+i]='';
}
ans[+n]='\0';
}
}
int main()
{
scanf("%d %s %s",&n,s1,s2);
char ans1[maxn],ans2[maxn];
int e1,e2;
solve(s1,ans1,n,e1);
solve(s2,ans2,n,e2);
if(strcmp(ans1,ans2)== && e1==e2){
printf("YES ");
printf("%s*10^%d\n",ans1,e1);
}
else{
printf("NO ");
printf("%s*10^%d %s*10^%d\n",ans1,e1,ans2,e2);
}
return ;
}
PAT甲题题解-1060. Are They Equal (25)-字符串处理(科学计数法)的更多相关文章
- PAT甲题题解-1053. Path of Equal Weight (30)-dfs
由于最后输出的路径排序是降序输出,相当于dfs的时候应该先遍历w最大的子节点. 链式前向星的遍历是从最后add的子节点开始,最后添加的应该是w最大的子节点, 因此建树的时候先对child按w从小到大排 ...
- PAT甲题题解-1012. The Best Rank (25)-排序水题
排序,水题因为最后如果一个学生最好的排名有一样的,输出的课程有个优先级A>C>M>E那么按这个优先级顺序进行排序每次排序前先求当前课程的排名然后再与目前最好的排名比较.更新 至于查询 ...
- PAT甲题题解-1036. Boys vs Girls (25)-找最大最小,大水题
题意:给出n个人的姓名.性别.ID.分数,让你找出其中哪个妹纸分数最高.哪个汉子分数最低.以及他们的差如果没有妹纸或者汉子,则对应输出Absent,差用NA代替. 就是for一遍找最大最小值,水题 # ...
- PAT甲题题解-1062. Talent and Virtue (25)-排序水题
水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...
- PAT甲题题解-1074. Reversing Linked List (25)-求反向链表
题意说的很清楚了,这种题的话,做的时候最好就是在纸上自己亲手模拟一下,清楚一下各个指针的情况, 这样写的时候就很清楚各个指针变量保存的是什么值. PS:一次AC哈哈,所以说自己动手在纸上画画还是很有好 ...
- PAT甲题题解-1125. Chain the Ropes (25)-贪心水题
贪心水题,每次取最短的两个绳子合并,长度缩减成一半 #include <iostream> #include <cstdio> #include <algorithm&g ...
- PAT甲题题解-1001. A+B Format (20)-字符串处理,水
计算A+B的和,并且按标准格式处理,每3个就要有个逗号 #include <iostream> #include <cstdio> #include <algorithm ...
- PAT甲题题解-1007. Maximum Subsequence Sum (25)-求最大子区间和
题意:给出n个数,求最大连续的子区间和,并且输出该区间的第一个和最后一个数. 如果所有数都小于0,那么则输出0,第一个数和最后一个数. 看数据k的范围,就知道肯定不能两层for循环来求区间和,O(n^ ...
- PAT甲题题解-1009. Product of Polynomials (25)-多项式相乘
多项式相乘 注意相乘结果的多项式要开两倍的大小!!! #include <iostream> #include <cstdio> #include <algorithm& ...
随机推荐
- WCF 基于 WinForm 宿主 发布
ServiceHost Host = new ServiceHost(typeof(ServiceHTTP)); //绑定 System.ServiceModel.Channels.Binding h ...
- webpack分离css单独打包
这篇文章过期了,webpack4.x已经不这么用了,最新的可以看这个地址webpack实战场景系列 原文地址:http://www.izhongxia.com/posts/44724.html CHA ...
- [Android自动化] 在 pip-9.0.1 版本情况下安装 uiautomator2 报错的解决办法
1.在命令窗口中使用命令: pip install uiautomator2 时报 pip 版本过低,需要先升级 pip 版本,理论上会按照提示进行升级 pip 操作,但执行升级命令时到最后却还是报错 ...
- [python]如何理解uiautomator里面的 child, child_by_text, sibling,及使用场景
如何理解uiautomator里面的 child, child_by_text, sibling,我们借助android原生的uiautomatorviewer抓取的控件来进行理解 以如下图进行详细讲 ...
- 四、 git关联远程仓库及推送
接之前笔记,在 github上建立与本地同名的仓库 demo 关联远程仓库 1. https 模式 远程库的名字就是origin,这是Git默认的叫法 git remote add origi ...
- Rx编程的第一步是将native对象转换为monad对象
Rx编程的第一步是将native对象转换为monad对象 将基础类型转换为高阶类型,以便使用函数式编程的特性.
- Redis系列四:redis支持的数据类型
一.字符串<String> 1. 字符串类型:实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB 2. 设值命令: s ...
- 【Git123】Git
https://www.cnblogs.com/jager/p/6684637.html 四.git工作原理 这边文章介绍的不错 Git from the Bottom Up 六.git常用命令 wo ...
- Leetcode——300. 最长上升子序列
题目描述:题目链接 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101], ...
- 《Head First 设计模式》[01] 策略模式
<Head First 设计模式>(点击查看详情) 1.写在前面的话 之前在列书单的时候,看网友对于设计模式的推荐里说,设计模式的书类别都大同小异,于是自己就选择了Head First系列 ...