PAT 甲级 1060 Are They Equal
1060. Are They Equal (25)
If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered equal since they are both saved as 0.123*105 with simple chopping. Now given the number of significant digits on a machine and
two float numbers, you are supposed to tell if they are treated equal in that machine.
Input Specification:
Each input file contains one test case which gives three numbers N, A and B, where N (<100) is the number of significant digits, and A and B are the two float numbers to be compared. Each float number is non-negative, no greater than 10100,
and that its total digit number is less than 100.
Output Specification:
For each test case, print in a line "YES" if the two numbers are treated equal, and then the number in the standard form "0.d1...dN*10^k" (d1>0 unless the number
is 0); or "NO" if they are not treated equal, and then the two numbers in their standard form. All the terms must be separated by a space, with no extra space at the end of a line.
Note: Simple chopping is assumed without rounding.
Sample Input 1:
3 12300 12358.9
Sample Output 1:
YES 0.123*10^5
Sample Input 2:
3 120 128
Sample Output 2:
NO 0.120*10^3 0.128*10^3
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string> using namespace std;
pair<string,int> m;
string a,b;
string aa,bb;
int n;
pair<string,int> fun(string a)
{
int len=a.length();
int begin,end;
int tag1=0,tag2=0;
for(int i=0;i<len;i++)//去除前缀的0和后缀的0
{
if(!tag1&&(a[i]!='0'||(a[i]=='0'&&a[i+1]=='.')))
begin=i,tag1=1;
if(tag2==1&&a[i]!='0')
end=i;
if(tag2==0)
end=i;
if(a[i]=='.')
tag2=1;
}
string c=a.substr(begin,end-begin+1);
int i;
for(i=0;c[i];i++)//找到小数点的位置 if(c[i]=='.')
break;
int j;
for(j=0;c[j];j++)//找到第一个不是0的数字位置,即科学技术法中小数点应该放在哪个位置之前,
{
if(c[j]!='0'&&c[j]!='.')
break;
}
string d="0.";int num=0;
for(int ii=j;c[ii];ii++)
{
if(c[ii]=='.') continue;
d+=c[ii];
num++;
if(num>=n)
break;
}
for(int i=0;i<n-num;i++)//补0
d+='0'; int k=i-j;//小数点位置的变化,就是指数
if(k<0) k++;
m.first=d;
m.second=k;
return m;
}
int main()
{
cin>>n>>a>>b;
pair<string,int> mm1,mm2;
mm1=fun(a);
mm2=fun(b);
if(mm1==mm2)
cout<<"YES "<<mm1.first<<"*10^"<<mm1.second<<endl;
else
cout<<"NO "<<mm1.first<<"*10^"<<mm1.second<<" "<<mm2.first<<"*10^"<<mm2.second<<endl;
return 0;
}
PAT 甲级 1060 Are They Equal的更多相关文章
- 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【模拟】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805413520719872 题意: 给定两个数,表示成0.xxxx ...
- 【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 ...
- pat 甲级 1053. Path of Equal Weight (30)
1053. Path of Equal Weight (30) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...
- PAT 甲级 1053 Path of Equal Weight (30 分)(dfs,vector内元素排序,有一小坑点)
1053 Path of Equal Weight (30 分) Given a non-empty tree with root R, and with weight Wi assigne ...
- PAT甲级——A1060 Are They Equal
If a machine can save only 3 significant digits, the float numbers 12300 and 12358.9 are considered ...
- PAT甲级——A1053 Path of Equal Weight
Given a non-empty tree with root R, and with weight Wi assigned to each tree node Ti. The weig ...
- 1060 Are They Equal——PAT甲级真题
1060 Are They Equal If a machine can save only 3 significant digits, the float numbers 12300 and 123 ...
- PAT 1060 Are They Equal[难][科学记数法]
1060 Are They Equal(25 分) If a machine can save only 3 significant digits, the float numbers 12300 a ...
随机推荐
- 使用ClipboardManager碰到Can't create handler inside thread that has not called Looper.prepare()
直接放上我的代码.希望能给碰到相同问题的朋友提供帮助 Runnable runnable = new Runnable() { public void run() { ClipboardManager ...
- CBiontCache
/************************************************************************/ /* 预先加载一些生物以备将来使用 */ /* 专 ...
- Ubuntu打开core dump
输入ulimit -a 如果core file size为0,那就说明没有打开core dump,尽管你的程序crash的时候会显示core dumped,但实际上不会生成core file 输入ul ...
- python将str转换成字典
典型的应用场景:Json数据的解析 >>> user "{'name' : 'jim', 'sex' : 'male', 'age': 18}" >> ...
- 一款纯html5实现的时钟
今天给大家分享一款非常漂亮的纯html5实现的时钟.整个界面都由html5绘制而成.一起看下效果图: 在线预览 源码下载 实现的代码. html代码: <div class="co ...
- Unix系统编程()在堆上分配内存
在堆上分配内存:malloc和free 一般情况下,C程序使用malloc函数族在堆上分配和释放内存.较之brk和sbrk,这些函数具备不少优点: 属于C语言标准的一部分 更易于在多线程程序中使用 接 ...
- SSM,即Spring+SpringMVC+MyBatis三个开源框架的整合框架集。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
- 【BZOJ】1639: [Usaco2007 Mar]Monthly Expense 月度开支(二分)
http://www.lydsy.com/JudgeOnline/problem.php?id=1639 同tyvj1359,http://www.cnblogs.com/iwtwiioi/p/394 ...
- java自定义获取星期几、几点、几分。
/** * @author 9082046**@qq.com * */ public void out_week_hour_minute() { lo ...
- clone命令
git clone <repository> <directory> git clone https://nulab.backlog.jp/git/BLG/tutorial.g ...