1060 Are They Equal (25分)

题目

思路

定义结构体

  1. struct fraction{
  2. string f;
  3. int index;
  4. }

把输入的两个数先都转换为科学计数法,统一标准后再做比较,index表示指数

注意点

  1. 0或者0的各种形式
  2. 0.1, 0.01等

代码

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cmath>
  4. #include<algorithm>
  5. #include<vector>
  6. #include<set>
  7. #include<string>
  8. using namespace std;
  9. #define MAXN 101
  10. struct fraction{
  11. string f;
  12. int index;
  13. fraction(char s[], int len){
  14. int pos = -1;
  15. int num = -1;
  16. int i = 0;
  17. for(i=0;s[i]!='\0';i++){
  18. if(num == -1 && s[i] != '0' && s[i] != '.'){
  19. num = i;
  20. }
  21. if(s[i] == '.'){
  22. pos = i;
  23. }
  24. }
  25. if(num == -1){
  26. f.append(len, '0');
  27. index = 0;
  28. return ;
  29. }
  30. if(pos != -1){
  31. if(pos < num){
  32. index = pos - num + 1;
  33. }else{
  34. index = pos - num;
  35. }
  36. }else{
  37. index = i - num;
  38. }
  39. f = s;
  40. if(pos != -1){
  41. f.erase(pos, 1);
  42. if(num > pos){
  43. num--;
  44. }
  45. }
  46. f = f.substr(num, f.length());
  47. if(f.length() < len){
  48. f.append(len-f.length(), '0');
  49. }else{
  50. f = f.substr(0, len);
  51. }
  52. }
  53. };
  54. void print(fraction f, int len) {
  55. printf("0.%s*10^%d", f.f.c_str(), f.index);
  56. }
  57. bool compare(fraction f1, fraction f2, int len){
  58. if(f1.index != f2.index){
  59. return false;
  60. }
  61. if(f1.f != f2.f){
  62. return false;
  63. }
  64. return true;
  65. }
  66. void toString(fraction f) {
  67. printf("f = %s, index = %d \n", f.f.c_str(), f.index);
  68. }
  69. int main() {
  70. int n;
  71. char s1[MAXN], s2[MAXN];
  72. scanf("%d %s %s", &n, s1, s2);
  73. fraction f1(s1, n);
  74. fraction f2(s2, n);
  75. if(compare(f1, f2, n) == true){
  76. printf("YES ");
  77. print(f1, n);
  78. } else{
  79. printf("NO ");
  80. print(f1, n);
  81. printf(" ");
  82. print(f2, n);
  83. }
  84. }

1060 Are They Equal (25分)的更多相关文章

  1. 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 ...

  2. 1060 Are They Equal (25 分)

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

  3. 【PAT甲级】1060 Are They Equal (25 分)(需注意细节的模拟)

    题意: 输入一个正整数N(<=100),接着输入两个浮点数(可能包含前导零,对于PAT已经习惯以string输入了,这点未知),在保留N位有效数字的同时判断两个数是否相等,并以科学计数法输出. ...

  4. 【PAT】1060 Are They Equal (25)(25 分)

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

  5. 1060. Are They Equal (25)

    题目如下: If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are consi ...

  6. pat 1060. Are They Equal (25)

    题目意思直接,要求将两个数转为科学计数法表示,然后比较是否相同  不过有精度要求 /* test 6 3 0.00 00.00 test 3 3 0.1 0.001 0.001=0.1*10^-2 p ...

  7. PAT (Advanced Level) 1060. Are They Equal (25)

    模拟题.坑点较多. #include<iostream> #include<cstring> #include<cmath> #include<algorit ...

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

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

  9. A1060 Are They Equal (25 分)

    一.技术总结 cnta.cntb用于记录小数点出现的位置下标,初始化为strlen(字符串)长度. q.p用于记录第一个非0(非小数点)出现的下标,可以用于计算次方和方便统计输出的字符串,考虑到前面可 ...

随机推荐

  1. Android电源管理基础知识整理

    前言 待机.睡眠与休眠的区别? Android开发者官网当中提到"idle states",该如何理解,这个状态会对设备及我们的程序造成何种影响? 进入Doze模式中的idle状态 ...

  2. 剑指offer-面试题31-栈的压入弹出序列-栈

    #include<iostream> #include<string.h> #include<algorithm> #include<cmath> #i ...

  3. webkit 技术内幕 笔记 二

    浏览器历史 80年代末-90年代初:worldwideweb(nexus) -- Berners-Lee 1993: Mosaic浏览器,后来叫网景(Netscape)--Marc Andreesse ...

  4. web做题记录

    2020.1.19 南邮ctf 签到题 题目:key在哪里? 在火狐浏览器中右键选择打开查看源代码,在源代码可以看到如下 因为是第一次做这个题,不知道提交啥,我先提交了“admiaanaaaaaaaa ...

  5. MySQL优化(三)——主从复制

    1.MySQL高可用        主从复制      一主多备      多主多备           2.MySQL主从复制        主机所有写的数据都会生成二进制SQL日志执行文件,从机只 ...

  6. 在 myeclipse 引入项目

    1.进入 myeclipse 在界面空白处,右键,出现如下图所示 2.选择 Import...,弹出如下图所示界面 3.双击上图红框内的内容,弹出如下图所示界面,然后点击按钮“Browse...”,选 ...

  7. A函数跨区域

    ODerController.class.php内容如下 1 <?php /* * To change this license header, choose License Headers i ...

  8. OpenCV3.2.0+VS2015开发环境配置

    vs2015安装可参考:https://www.jianshu.com/p/391e67529bd3 OpenCV3.2.0配置可参考:https://www.jianshu.com/p/026093 ...

  9. 3.Docker 操作镜像

    获取镜像 之前提到过,Docker Hub 上有大量的高质量的镜像可以用,这里我们就说一下怎么获取这些镜像. 从 Docker 镜像仓库获取镜像的命令是 docker pull.其命令格式为: doc ...

  10. Wannafly Camp 2020 Day 2F 采蘑菇的克拉莉丝 - 树链剖分

    如果暴力维护,每次询问时需要对所有孩子做计算 考虑通过树剖来平衡修改与询问的时间,询问时计算重链和父树,轻链的贡献预先维护好,修改时则需要修改可能影响的轻链贡献,因为某个点到根的路径上轻重交替只有 \ ...