POJ1008 1013 1207 2105 2499(全部水题)
做了一天水题,挑几个还算凑合的发上来。
POJ1008 Maya Calendar
分析:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; char Haab[][10] = {"pop", "no", "zip", "zotz", "tzec", "xul", "yoxkin", "mol", "chen", "yax", "zac", "ceh", "mac", "kankin", "muan", "pax", "koyab", "cumhu", "uayet"}; char Tzo[][10] = {"imix", "ik", "akbal", "kan", "chicchan", "cimi", "manik", "lamat", "muluk", "ok", "chuen", "eb", "ben", "ix", "mem", "cib", "caban", "eznab", "canac", "ahau"}; int main() { int year, day, cnt, month; char szmonth[20]; int T; scanf("%d", &T); printf("%d ", T); for(int k=0; k<T; k++) { scanf("%d.%s%d", &day, szmonth, &year); for(int i=0; i<19; i++) if(strcmp(Haab[i], szmonth) == 0) month = i; cnt = year*365+month*20+day+1; int ty=0, td=0, tm=0; ty=(cnt-1+260)/260-1; tm=(cnt-1+20)%20; td=(cnt-1+13)%13+1; printf("%d %s %d ", td, Tzo[tm], ty); } return 0; }
POJ1013 Counterfeit Dollar
分析:
超级暴力:分别对A~L这12个字母枚举轻重两种情况。
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char _left[5][20], _right[5][20], cond[5][20]; int cmp(char s1[], char s2[], int k, int j) { /* * 用来比较天平的平衡 * 右边up 返回 1 * 平衡 返回 0 * 右边down 返回 -1 */ int len = strlen(s1); int lef, rig; lef = rig = 0; for(int i=0; i<len; i++) { if(s1[i] == 'A'+k) lef += j; if(s2[i] == 'A'+k) rig += j; } if(lef < rig) return 1; else if(lef == rig) return 0; else return -1; } int main(){ int T, i, c, j; scanf("%d", &T); while(T--) { for(i=0; i<3; i++) { scanf("%s %s %s", _left[i], _right[i], cond[i]); } for(i=0; i<12; i++) { //分别枚举12个字母 for(j=-1; j<=1; j++) { //轻重两种情况 if(j==0) continue; for(c=0; c<3; c++) { //三组 int res = cmp(_left[c], _right[c], i, j); if( ! ((res == 1 && cond[c][0] == 'u') || (res == 0 && cond[c][0] == 'e') || (res == -1 && cond[c][0] == 'd'))) break; } if(c >= 3) break; } if(c >= 3) break; } printf("%c is the counterfeit coin and it is ", i+'A'); if(j == -1) printf("heavy. "); else printf("light. "); } return 0; }