POJ 1008 简单模拟题

e.... 虽然这是一道灰常简单的模拟题、但是米做的时候没有读懂第二个日历的计时方法。然后捏。敲完之后华丽的WA了进一个点。坑点就在一年的最后一天你是该输出本年的。e ...但是我好想并没有。、看discuss里好想被坑的人还不少。总天数能直接整除260的时候。年数要减1。

不喜欢做模拟.....5555....

附代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<string>
#include<map>
using namespace std;

string Maya_name[20] = {"pop", "no", "zip", "zotz", "tzec",  "xul", "yoxkin", "mol", "chen", "yax",  "zac", "ceh", "mac", "kankin", "muan",  "pax", "koyab", "cumhu", "uayet"};
string Holly_name[21] = {"imix", "ik", "akbal", "kan", "chicchan",   "cimi", "manik", "lamat", "muluk", "ok",   "chuen", "eb", "ben", "ix", "mem",   "cib", "caban", "eznab", "canac", "ahau"};

int main()
{
    map<string, int>m;
    m.clear();
    for (int i=0; i<19; ++i)
    {
        m[Maya_name[i]] = i;
    }

map<int, string>mm;
    mm.clear();
    for (int i=0; i<20; ++i)
    {
        mm[i+1] = Holly_name[i];
    }

int t, total;
    int day, year;
    char temp;
    string month;
    while(cin >> t)
    {
        cout << t << endl;
        while(t--)
        {
            total = 0;
            cin >> day >> temp >> month >> year;
            int tm = m[month];
            total += year * 365 + tm * 20 + day + 1;
           // cout << total << "==\n";
            year = total / 260;
            int tot = total;
            tot %= 260;
            tm = tot % 20;
            if (tm == 0) tm = 20;
            day = total % 13;
            if (day == 0) day = 13;
            if (total % 260 == 0)
            {
                year -= 1;
            }
            cout << day << ‘ ‘ << mm[tm] << ‘ ‘ << year << endl;
        }
    }
    return 0;
}

时间: 2024-11-03 22:45:01

POJ 1008 简单模拟题的相关文章

FZU Problem 2034 Password table (简单模拟题)

这种简单题做了好长时间,我是不是有点逗? 地址:http://acm.fzu.edu.cn/problem.php?pid=2034 不解释了,自己看吧,练手的好题 上个代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <stdio.h> #include <string.h> #include <stdlib.h>

HDU 4772 Zhuge Liang&#39;s Password (简单模拟题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4772 题面: Zhuge Liang's Password Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1404    Accepted Submission(s): 926 Problem Description In the anc

poj 1590Palindromes 简单模拟

//简单模拟吧,哎,一直感觉自己很水 //继续练吧 #include <algorithm> #include <bitset> #include <cassert> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include <complex> #include <cstdio> #include

HDU 5059 Help him(简单模拟题)

http://acm.hdu.edu.cn/showproblem.php?pid=5059 题目大意: 给定一个字符串,如果这个字符串是一个整数,并且这个整数在[a,b]的范围之内(包括a,b),那就输出YES,其它的都是NO. 这个字符串是整数的条件: 1.如果它是正整数,它只包含前导不是0的数(这个数前面没有零). 2.如果它是负整数,只包含一个'-'符号,任然没有前导0. 3.除此之外都不是非法的 解题思路: http://bestcoder.hdu.edu.cn/ 这里有 要注意: 0

HDU 1234 简单模拟题

题目很简单不多说了,我只是觉得这题目的输入方式还是很有特点的 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 using namespace std; 6 7 struct People{ 8 char name[20]; 9 int h1 , h2 , m1 , m2 , s1 , s2; 10 }p[10005]; 11 12

从一道简单模拟题看数组越界以及其他

题目要求比较明确,可能做起来难度不是很大. 但我这道题用了比较久的时间. 原因是我用了一种特别容易错的方法.我在移动数组元素的时候采用不用辅助数组由前往后复制的方法(想来我也真是没事找事干),然后在这种方法下我起初交了许多遍WA,然后自己经过长时间的测试终于发现了问题所在,不止一个,各种逻辑错误. 总结主要有以下几点: 分类讨论不够明确,不够完整 没有考虑到前边操作对后边数据的影响 没有意识到数组越界的后果(a[-1],a[maxn]) 要发现和解决这些问题并不容易,需要有很高的调试技巧,通过这

HihoCoder1052基因工程(简单模拟题)

描述 小Hi和小Ho正在进行一项基因工程实验.他们要修改一段长度为N的DNA序列,使得这段DNA上最前面的K个碱基组成的序列与最后面的K个碱基组成的序列完全一致. 例如对于序列"ATCGATAC"和K=2,可以通过将第二个碱基修改为"C"使得最前面2个碱基与最后面两个碱基都为"AC".当然还存在其他修改方法,例如将最后一个碱基改为"T",或者直接将最前面两个和最后面两个碱基都修改为"GG". 小Hi和小Ho

poj 1068 Parencodings 模拟题

Description Let S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways: q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses before the ith right parenthesis in S (P-sequence). q B

HDU ACM 1035 Robot Motion 简单模拟题

分析:一步步的走,走出矩阵则说明没有环,若走到已经走过的地方,说明有环,按格式输出结果,OK. #include<iostream> using namespace std; #define N 15 int dir[4][2]={-1,0,1,0,0,-1,0,1}; char map[N][N]; int vis[N][N]; char ch[]="NSWE"; int n,m; int id(char c) { int i; for(i=0;i<4;i++) i