1060 Are They Equal (25分)

题目

思路

定义结构体

struct fraction{
string f;
int index;
}

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

注意点

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

代码

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<string>
using namespace std; #define MAXN 101 struct fraction{
string f;
int index;
fraction(char s[], int len){
int pos = -1;
int num = -1;
int i = 0;
for(i=0;s[i]!='\0';i++){
if(num == -1 && s[i] != '0' && s[i] != '.'){
num = i;
}
if(s[i] == '.'){
pos = i;
}
}
if(num == -1){
f.append(len, '0');
index = 0;
return ;
}
if(pos != -1){
if(pos < num){
index = pos - num + 1;
}else{
index = pos - num;
}
}else{
index = i - num;
}
f = s;
if(pos != -1){
f.erase(pos, 1);
if(num > pos){
num--;
}
}
f = f.substr(num, f.length());
if(f.length() < len){
f.append(len-f.length(), '0');
}else{
f = f.substr(0, len);
}
}
}; void print(fraction f, int len) {
printf("0.%s*10^%d", f.f.c_str(), f.index);
} bool compare(fraction f1, fraction f2, int len){
if(f1.index != f2.index){
return false;
}
if(f1.f != f2.f){
return false;
}
return true;
} void toString(fraction f) {
printf("f = %s, index = %d \n", f.f.c_str(), f.index);
} int main() {
int n;
char s1[MAXN], s2[MAXN];
scanf("%d %s %s", &n, s1, s2);
fraction f1(s1, n);
fraction f2(s2, n);
if(compare(f1, f2, n) == true){
printf("YES ");
print(f1, n);
} else{
printf("NO ");
print(f1, n);
printf(" ");
print(f2, n);
}
}

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. extern关键字详解

    基本理解 extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. extern有两个作用 1.当它与"C"一起连 ...

  2. Miller_Rabin()算法素数判定 +ollard_rho 算法进行质因数分解

    //****************************************************************// Miller_Rabin 算法进行素数测试//速度快,而且可以 ...

  3. 0009 基于DRF框架开发(02 创建模型)

    上一节介绍了DRF开发的基本流程,共五个步骤: 1 创建模型 2 创建序列化器 3 编写视图 4 配置URL 5 运行测试 本节主要讲解创建模型. 构建学校,教师,学生三个模型,这三个模型之间的关系是 ...

  4. MySQL数据库优化(一)

    1.1.1. 慢查询日志当查询超过一定的时间没有返回结果的时候,才会记录到慢查询日志中.默认不开启.采样的时候手工开启.可以帮助我们找出执行慢的 SQL 语句查看慢 SQL 日志是否启用(on 表示启 ...

  5. python3练习100题——050

    题目:输出一个随机数. 程序分析:使用 random 模块. import random print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 pri ...

  6. vue自学入门-8(vue slot-scope)

    vue自学入门-1(Windows下搭建vue环境) vue自学入门-2(vue创建项目) vue自学入门-3(vue第一个例子) vue自学入门-4(vue slot) vue自学入门-5(vuex ...

  7. Leetocode7道买卖股票问题总结(121+122+123+188+309+901+714)

    题目1----121. 买卖股票的最佳时机I: 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/ 给定一个数组, ...

  8. Power Strings[poj2406]题解

    Power Strings Description - Given two strings a and b we define ab to be their concatenation. For ex ...

  9. 关于npm 的注意事项

    npm install 之后 会生成package-lock.json 文件 ,注意这个文件不能删除,否则每次 npm i 之后,node_modules都装的是最新的,会出现意想不到的问题.

  10. 数据预处理 | 通过 Z-Score 方法判断异常值

    判断异常值方法:Z-Score 计算公式 Z = (X-μ)/σ 其中μ为总体平均值,X-μ为离均差,σ表示标准差.z的绝对值表示在标准差范围内的原始分数与总体均值之间的距离.当原始分数低于平均值时, ...