1.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, if A is equal to B, you should print "YES", or print "NO".
Sample Input
1 2
2 2
3 3
4 3
Sample Output
NO
YES
YES
NO
2.這個(gè)是很久之前做的蕊梧,當(dāng)時(shí)做的時(shí)候以為是很弱智的題目,三兩下寫(xiě)完以后發(fā)現(xiàn)?Output Limit Exceeded,搞清楚它里面隱藏的信息后覺(jué)得這是一道很麻煩的遠(yuǎn)遠(yuǎn)不是只報(bào)?Output Limit Exceeded的題目就把它先放下了殉疼,如今暑假再來(lái)回頭看野瘦,想要啃下這個(gè)難搞的問(wèn)題涂屁,由于復(fù)習(xí)階段放下了蠻久的牲览,現(xiàn)在也在慢慢重新找回做題的感覺(jué)射窒。
①c考慮的東西真的太多了渴频,小數(shù)點(diǎn)的芽丹,0的,比如:在簡(jiǎn)單的A==B判斷里卜朗,計(jì)算機(jī)中1.0跟1是會(huì)輸入NO的拔第,這個(gè)時(shí)候就需要我們?nèi)タ紤],除掉小數(shù)點(diǎn)后面的0再比較了场钉,那問(wèn)題又來(lái)了蚊俺,萬(wàn)一是1.0000000001呢,這就要用到兩種不同順序的循環(huán)做這個(gè)工作了
int i,j,len,flag=-1;
len = strlen(str);
for (i=0;i<=len-1; i++){
if (str[i] == '.'){
flag = i;
break;
}
}
if (flag>=0){
for (i=len-1;i>=0;i--){
if (str[i]!='0')break;
else str[i]='\0';
}
if (str[i]=='.') str[i] = '\0';
}
}
先尋找小數(shù)點(diǎn)逛万,然后再?gòu)淖钚〉奈粩?shù)開(kāi)始循環(huán)泳猬,只要不為0就跳出去直接判斷,為0則做清除工作(‘\0’)
ps:值得注意的問(wèn)題是定義數(shù)組時(shí)容量大小要常規(guī)性定義到100000
②因?yàn)閯偨Y(jié)束的這個(gè)學(xué)期剛好就學(xué)了java宇植,就想用java也試一試這道曾經(jīng)被我認(rèn)為很棘手的題得封,然而.......知道java里有個(gè)東西叫BigDecimal類(lèi)以后我哭了。然后指郁!就直接無(wú)腦操作就完了忙上!
對(duì)它的相關(guān)解釋是這樣的
java.math.BigDecimal.compareTo(BigDecimal val) 由BigDecimal對(duì)象與指定BigDecimal值進(jìn)行比較。
兩個(gè)BigDecimal對(duì)象的值相等闲坎,但有一個(gè)不同的比例(如2.0和2.00)都用這種方法視為相等疫粥。
此方法提供優(yōu)先于個(gè)別方法的六個(gè)邏輯比較運(yùn)算符 (<, ==, >, >=, !=, <=).
建議的習(xí)慣用法執(zhí)行這些比較是的:(x.compareTo(Y) <op>0)
ps:要注意的是判斷循環(huán)的時(shí)候要用sc.hasNext()方法返回boolean值,而不是直接sc.next(),還有最基本的oj上默認(rèn)類(lèi)名為Main腰懂。
java完整代碼
import java.math.BigDecimal;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
BigDecimal A = sc.nextBigDecimal();
BigDecimal B = sc.nextBigDecimal();
if(A.compareTo(B)==0) System.out.println("YES");
else System.out.println("NO");
}
}
}
3.總結(jié):這題來(lái)說(shuō)用java簡(jiǎn)直比c舒服多了(應(yīng)該很多題目都是)梗逮,但是首先得了解java它有這個(gè)類(lèi)有這個(gè)方法,從而才知道要去用這個(gè)绣溜;而c直接就是思維問(wèn)題慷彤,要想解決一個(gè)問(wèn)題,就得盡可能解析表面信息和隱藏信息,再去一個(gè)個(gè)突破瞬欧,一不小心疏忽解不出來(lái)就是解不出來(lái)的贷屎。