1. POJ 3299 Humidex
這道題是已知H,D,T三者的運算關系,然後告訴你其中兩個。求另一個
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main () { char c,h; double T,D,H; while(cin>>c) { T=D=H=1000; if (c=='E') break; if (c=='T') cin>>T; else if (c=='D') cin>>D; else cin>>H;//用這種方式輸入比較方便 cin>>h; if (h=='T') cin>>T; else if (h=='D') cin>>D; else cin>>H; if (H==1000) { H=T+0.5555*(6.11*exp (5417.7530 * ((1/273.16) - (1/(D+273.16))))-10.0);//exp(t) 表示e的t次 } if (D==1000) { D=1/(1/273.16-log(((H-T)/0.5555+10.0)/6.11)/5417.7530)-273.16;//log(t) 實際上是lnt } if (T=1000) T=H-0.5555*(6.11*exp (5417.7530 * ((1/273.16) - (1/(D+273.16))))-10.0); printf("T %.1f D %.1f H %.1f\n",T,D,H);//G++上面用.f才AC。 } return 0; }
2. POJ 2159 Ancient Cipher
這道題大致是一串密碼,經過字母置換和亂序排序之後得到新的一串加密字符串。然後給出一串加密的和一串專家推測出來的密碼。問是否為同一個
這道題其實並不能得到確切的,因為亂序的順序並沒有告訴我們,所以只要判斷每個字符出現的次數是否相同即可。
這道題一開始做的時候被坑了,以為重置的就是簡單向右移動一位。。
//這道題坑爹之處在於密碼置換的時候並不是簡單的向左加1.。 而是可以任意替換 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int map[30],b[30]; int main () { int i; char eng[105]; char str[105]; cin>>eng>>str; for (i=0; i<strlen(eng); i++) map[eng[i]-'A']++; for (i=0; i<strlen(str); i++) b[str[i]-'A']++; sort(map,map+26); sort(b,b+26); int flag=1; for (i=0; i<26; i++) if (map[i]!=b[i]) flag=0; if (flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; return 0; }