2 lchad lchad 于 2014.02.28 19:21 提问

做过了之后提示 Output Limit Exceeded 输入多组数据

#include
using namespace std;

int isLeapYear(int year);

int getSum(int year, int rest);

int getRest(int year, int month, int day);

int main(void)
{
unsigned int year;
unsigned int month;
unsigned int day;
char fowardslash1;
char fowardslash2;
int sum = 0;
int rest = 0;
int x;
while(cin >> x)
{
cin >> year;
cin >> fowardslash1;
cin >> month;
cin >> fowardslash2;
cin >> day;

    rest = getRest(year, month, day);

    sum = getSum(year, rest);

    char *week[7] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};


    cout << week[sum] << endl;

}

system("PAUSE");
return 0;

}

int isLeapYear(int year)
{
int flag;
if(year % 4 == 0)

    if(year % 100)

        if(year % 400 != 0)
            flag = 0;
        else
            flag = 1;
        else
            flag = 1;
        else
            flag = 0;
return flag;

}

int getSum(int year, int rest)
{
int normal[13] = {365, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int leap[13] = {366, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int sum = 0;
while(year - 1899)
{
if(year % 4 == 0)

        if(year % 100)

            if(year % 400 != 0)

                sum += normal[0];
            else
                sum += leap[0];
            else
                sum += leap[0];
            else
                sum += normal[0];

    year--;
}
sum += rest;
sum = sum % 7;

return sum;

}

int getRest(int year, int month, int day)
{
int normal[13] = {365, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int leap[13] = {366, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i;
int rest = 0;
if(!isLeapYear(year))
{
for(i = 1; i < month-1; i++)
{
rest += normal[i];
}
}
else
{
for(i = 1; i < month-1; i++)
{
rest += leap[i];
}
}
rest += day;

return rest; 

}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
如何输入多组测试数据(Output Limit Exceeded错误)
当scanf读取成功时返回读取到的参数数量,否则返回EOF。EOF是一个宏,定义在stdio.h里,值为-1。以下面代码为例,正确的判断方式有:scanf(&quot;%d-%d-%d&quot;, &amp;amp;year, &amp;amp;month, &amp;amp;day) != EOFscanf(&quot;%d-%d-%d&quot;, &amp;amp;year, &amp;amp;month, &amp;amp;day) == 3或~scanf(&quot;%d-%d-%...
ACM中关于Output Limit Exceeded和Time Limit Exceeded
Output Limit Exceeded 多数发生在递归遍历的过程中,多输出了一些内容(比如说空格)。Output Limit Exceeded还指如果输入某一组数据,你的程序返回的结果是一直输出某个结果,死循环输出的那种。Time Limit Exceeded,如果你相信你的算法是最优的,那就检查一下什么地方在什么数据下出现了死循环。否则还是考虑换个思路解题的好。TLE除了死循环就是算法问题。
output limit exceed 常见错误
output limit exceed   常见错误 最近做题,好几次出现了这样的令人郁闷的答案 output limit exceed   ,  仔细查看了自己的代码,仍然没有发现错误,后来上网上搜索答案,也是有好多人遇到过这些问题,自己的那个题经过多次修改,最终解决了,我把scanf读取lld改为cin或者直接把longlong 等更改为int就没有问题了,后来我不死心又从网上搜索http:
POJ 1007 DNA Sorting——Output Limit Exceeded
这题本就是一道水题,但是让我弄出了 Output Limit Exceeded,起先没注意以为是自己的运行超时了,后来在优化下排序,发现不是如此。 最后才发现是,原来是最大数组长度是50,而且是字符串,而我真的设置了最大是50,造成最后字符数组尾部没有‘\0’,在输出的时候出问题了。 示例一: #include #define LENGTH 3 int main(v
kettle工具导出excel报错内存溢出的解决方法GC overhead limit exceeded
一般情况下,我们会执行这样的语句调用kjb $kettle_home/kitchen.sh -file=$file_path/tongji.kjb 在执行sh tongji.sh时,有时数据量不是很大,只有几万条就会报错 java.lang.OutOfMemoryError: GC overhead limit exceeded 我当时也是很困惑,几个同事查了百度后改了  dat
OJ用java时总出现Time Limit Exceeded原因之一
在刷OJ题时遇到了一个题,无论怎么优化,仍然超时, 最后把输出语句换成了append(); 如下: StringBuilder sb = new StringBuilder(); for (Student std : students) { sb.append(std.num).append(" ").append(std.name).append(" ").append(std.grad
Wrong Answer,Memory Limit Exceeded
1.做题时遇到一个奇葩错误,
[leetcode] ZigZag Conversion
题目要求: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility) P A H N A
Myeclipse错误:GC overhead limit exceeded
这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。解决方案是,关闭该功能,使用—— -XX:-UseGCOverheadLimit   这里要查看是否有使用大内存的代码或死循环。   Sun官方解释: The parallel / concurrent collector will throw an OutOfMemor
导出excel时GCOverHeadLimit问题研究
问题现象 项目中需要一个数据导出excel功能,因为导出的文件需要是正式excel格式,包含多个sheet页,采用csv等方式无法满足需求,所以采用poi方式。考虑到poi方式会占用较多的内存,所以限制每次最多可以导出10000条数据,并且在开发环境自测的时候用可允许的最大的