其他分享
首页 > 其他分享> > 1060 Are They Equal

1060 Are They Equal

作者:互联网

题目

题意:给定两个实数,为他们的科学计数法数是否相等,精确到小数点后n位 

#include<iostream>
using namespace std;
int n;
void f(string &s,int &u) {
	u=0;
	int len=s.size();
	while(u<len&&s[u]!='.') u++;
	if(u==len) {
		int t=u;
		if(s=="0") u=0;
		for(int i=0; i<n-t; i++) {
			s.push_back('0');
		}
	} else {
		int w=0;//找到的第一个不为零的位置 
		while(w<len&&(s[w]=='0'||s[w]=='.')) w++;
		if(w==len) w=u;
		s.erase(u,1);
		while(s[0]=='0') s.erase(0,1);
		len=s.size();
		for(int i=0; i<n-len; i++) {
			s.push_back('0');
		}
		if(u<w) u=u-w+1;//纠正形如0.00000023=0.23*10^-6 
		else u=u-w;
	}
	s="0."+s.substr(0,n);

}
int main() {
	string s1,s2;
	cin>>n>>s1>>s2;
	int u1=0,u2=0;
	f(s1,u1);
	f(s2,u2);
	if(u1==u2 && s1==s2) {
		cout<<"YES "<<s1<<"*10^"<<u1;
	} else {
		cout<<"NO "<<s1<<"*10^"<<u1<<" "<<s2<<"*10^"<<u2;
	}
	return 0;
}

 

江楚郎(已婚 发布了298 篇原创文章 · 获赞 15 · 访问量 1万+ 私信 关注

标签:int,1060,s1,u1,Equal,u2,They,s2,计数法
来源: https://blog.csdn.net/qq_40991687/article/details/104094288