[Water]Hdu 2054 A == B ?

这道题类似Java的大数。

#include <iostream>
#include <string>
using namespace std;

string format(string str){
	bool zheng=true;
	int ppos=str.find(‘.‘);
	int len=str.length();
	string s1,s2;

	if(ppos!=-1){
		int ii;
		for(ii=len-1;ii>ppos;ii--){
			if(str[ii]!=‘0‘)break;
		}
		s2=str.substr(ppos,ii-ppos+1);
	}
	else ppos=len;

	int i=0;
	if(str[i]==‘-‘){
		zheng=false;
		i++;
	}
	for(;i<ppos;i++){
		if(str[i]!=‘0‘ ){
			s1=str.substr(i,ppos-i);
			break;
		}
	}
	if(s1=="")s1="0";
	if(s2==".")s2="";
	if(!zheng)s1="-"+s1;
	if(s1=="-0" && s2=="")s1="0";
	//cout<<"s1="<<s1<<"  s2="<<s2<<endl;
	return s1+s2;
}

int main(){
	string a,b;
	/*while(cin>>a){
		cout<<format(a)<<endl;
	}*/
	while(cin>>a>>b){
		//cout<<a<<"   "<<b<<endl;
		a=format(a);
		b=format(b);
		//cout<<"   "<<a<<"   "<<b<<"    ";
		if(a==b)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
}

  

时间: 2024-10-10 18:53:38

[Water]Hdu 2054 A == B ?的相关文章

HDU 2054 A == B ?(找小数点)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054 Problem Description Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO". Input each test case contains two numbers A and B. Output for each case, i

hdu 2054 A == B ? (java大数)

题目意思: http://acm.hdu.edu.cn/showproblem.php?pid=2054 给出两个数,判断是否相等,相等输出YES,否则输出NO. 题目分析: 注意题目给的是两个数,没有说明格式和大小,只能字符串模拟比较,或者java大数比较.这里给出java的大数比较. AC代码: import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; public class Ma

HDU 2054 又见GCD(水题??)

又见GCD Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 15221    Accepted Submission(s): 6397 Problem Description 有三个正整数a,b,c(0<a,b,c<10^6),其中c不等于b.若a和c的最大公约数为b,现已知a和b,求满足条件的最小的c. Input 第一行输入一个n

hdu 2054

Ps:WA了无数次,,简直成了心病..今天终于AC了..先取整数部分,去零,判断位数相等否,再比较.如果相等,再取小数部分,去零,比较,输出....好烦... 代码; #include "stdio.h" #include "string.h" void swi(char a[],char b[]); void swi1(char a[],char b[]); void qdele(char a[],char b[]); void hdele(char a[]);

HDU 2054: A == B ?

A == B ? import java.util.*; import java.math.*; class Main{ public static void main(String args[]) { Scanner scanner=new Scanner(System.in); while(scanner.hasNextBigDecimal()) { BigDecimal x=scanner.nextBigDecimal(),y=scanner.nextBigDecimal(); Syste

[Water]Hdu 5228 ZCC loves straight flush

枚举法: #include <iostream> #include <cstring> #include <string> #include <cstdio> #include <queue> #include <set> typedef long long ll; using namespace std; const int MAXN=100005; bool has[52]; int f(int start){ if(start

[Water]Hdu 5284 wyh2000 and a string problem

#include <cstdio> #include <cstring> using namespace std; const int MAXN=10000000+5; char a[MAXN]; int t; char b[3]={'w','y','h'}; int main() { scanf("%d",&t); getchar(); while(t--){ gets(a); for(int i=0;a[i+1];++i)if(a[i]=='v'&a

[Water]Hdu 1022 Train Problem I

声明一个char类型的栈. 假设题目输入内容为n(int),a(string),b(string),a.b的下标记为index1和indexe2. 第一步肯定是入栈. 然后遍历b中每个字符: 如果栈不为空且栈顶元素等于b[index2],出栈.否则a[index1]入栈,如果没有元素可入栈,输出No. #include <iostream> #include <string> #include <cstring> #include <stack> #incl

hdu 2054 A == B ? (java)

问题: 考虑问题不周到,没有考虑到可能是小数而且存在 1.0=1:01=1的情况. 本题使用了BigDecimal类,此类适用于高精度的数此时解决了小数和01=1的问题, 该类比较方式中n.equal(m)比较精度,而n.compareTo(m)==0只比较数值适用于该题. A == B ? Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s)