解题报告 纪念日
2011-08-07 14:22
155 查看
[/b]
1. [/b]题目[/b]
纪念日([/b]Date.pas/c/cpp[/b])[/b][/b]
题目描述[/b][/b]
[/b] [/b]新兵入队的日子[/b]是[/b]YY[/b]年[/b]MM[/b]月[/b]DD[/b]日,他们觉得这个日子特别有意义,所以决定过[/b]n[/b]天搞一次活动来纪念这个日子,可是他们不知道[/b]n[/b]天后是什么日子,所以请你帮忙计算一下日期(入队日算第[/b]0[/b]天)。[/b][/b]
输入数据[/b][/b]
[/b]文件第一行读入[/b]n (0<=n<=50000)[/b]
从文件的第二行分别读入[/b]YY[/b],[/b]MM[/b],[/b]DD[/b]其中[/b]1949<=YY<=1992[/b],日期绝对合法。[/b][/b]
[/b]
输出数据[/b][/b]
[/b]输出文件只有一行,即[/b]CCC[/b]老师生日第一万天以后的日期,格式为[/b] “Y-M-D”[/b]。[/b][/b]
[/b]
样例输入[/b][/b]
10000[/b]
1979 4 16[/b]
[/b]
样例输出[/b][/b]
[/b]2006-9-1[/b]
[/b]
2. [/b]题目实质[/b]
模拟,日期的计算。[/b]
3. [/b]算法[/b]
模拟。这个要用真正的模拟来做,一天天的往下数,反正只有几万天,不会超时。[/b]
事实上,对于日期类模拟来说,这无疑是最简单最有效的方法。[/b]
如果有兴致,当然也可以按照数学方法来一块时间一块时间的算,错了后果自负。[/b]
4. [/b]注意事项[/b]
只要判断一下,这个只不过是一个进制有点变态的进位加法。[/b]
5. [/b]程序代码[/b]
SueMiller [/b](Pascal[/b])[/b]
const mon:array[1..12]of integer=(31,28,31,30,31,30,[/b]
31,31,30,31,30,31);[/b]
var n:longint;[/b]
yy,mm,dd:longint;[/b]
p:longint;[/b]
function check(y:longint):boolean;[/b]
begin[/b]
if ((y mod 4=0) and (y mod 100<>0)) or(y mod 400=0) then exit(true);[/b]
exit(false);[/b]
end;[/b]
begin[/b]
assign(input,'Date.in');reset(input);[/b]
assign(output,'Date.out');rewrite(output);[/b]
readln(n);[/b]
readln(yy,mm,dd);[/b]
while n>0 do [/b]
begin[/b]
p:=mon[mm];[/b]
if (mm=2) and (check(yy)) then inc(p);[/b]
inc(dd);dec(n);[/b]
if dd>p then begin dd:=1;inc(mm);end;[/b]
if mm>12 then begin inc(yy);mm:=1;end;[/b]
end;[/b]
writeln(yy,'-',mm,'-',dd);[/b]
close(input);close(output);[/b]
end.[/b]
1. [/b]题目[/b]
纪念日([/b]Date.pas/c/cpp[/b])[/b][/b]
题目描述[/b][/b]
[/b] [/b]新兵入队的日子[/b]是[/b]YY[/b]年[/b]MM[/b]月[/b]DD[/b]日,他们觉得这个日子特别有意义,所以决定过[/b]n[/b]天搞一次活动来纪念这个日子,可是他们不知道[/b]n[/b]天后是什么日子,所以请你帮忙计算一下日期(入队日算第[/b]0[/b]天)。[/b][/b]
输入数据[/b][/b]
[/b]文件第一行读入[/b]n (0<=n<=50000)[/b]
从文件的第二行分别读入[/b]YY[/b],[/b]MM[/b],[/b]DD[/b]其中[/b]1949<=YY<=1992[/b],日期绝对合法。[/b][/b]
[/b]
输出数据[/b][/b]
[/b]输出文件只有一行,即[/b]CCC[/b]老师生日第一万天以后的日期,格式为[/b] “Y-M-D”[/b]。[/b][/b]
[/b]
样例输入[/b][/b]
10000[/b]
1979 4 16[/b]
[/b]
样例输出[/b][/b]
[/b]2006-9-1[/b]
[/b]
2. [/b]题目实质[/b]
模拟,日期的计算。[/b]
3. [/b]算法[/b]
模拟。这个要用真正的模拟来做,一天天的往下数,反正只有几万天,不会超时。[/b]
事实上,对于日期类模拟来说,这无疑是最简单最有效的方法。[/b]
如果有兴致,当然也可以按照数学方法来一块时间一块时间的算,错了后果自负。[/b]
4. [/b]注意事项[/b]
只要判断一下,这个只不过是一个进制有点变态的进位加法。[/b]
5. [/b]程序代码[/b]
SueMiller [/b](Pascal[/b])[/b]
const mon:array[1..12]of integer=(31,28,31,30,31,30,[/b]
31,31,30,31,30,31);[/b]
var n:longint;[/b]
yy,mm,dd:longint;[/b]
p:longint;[/b]
function check(y:longint):boolean;[/b]
begin[/b]
if ((y mod 4=0) and (y mod 100<>0)) or(y mod 400=0) then exit(true);[/b]
exit(false);[/b]
end;[/b]
begin[/b]
assign(input,'Date.in');reset(input);[/b]
assign(output,'Date.out');rewrite(output);[/b]
readln(n);[/b]
readln(yy,mm,dd);[/b]
while n>0 do [/b]
begin[/b]
p:=mon[mm];[/b]
if (mm=2) and (check(yy)) then inc(p);[/b]
inc(dd);dec(n);[/b]
if dd>p then begin dd:=1;inc(mm);end;[/b]
if mm>12 then begin inc(yy);mm:=1;end;[/b]
end;[/b]
writeln(yy,'-',mm,'-',dd);[/b]
close(input);close(output);[/b]
end.[/b]
相关文章推荐
- [LeetCode]Convert Sorted Array to Binary Search Tree, 解题报告
- 【Jason's_ACM_解题报告】Andy's First Dictionary
- [LeetCode] Anagrams 解题报告
- NOIP2016提高组复赛解题报告
- UVA11090 Going in Cycle!! 解题报告【判负环】【SPFA】【二分答案】
- POJ1258题解题报告
- LA 6856 Circle of digits 解题报告
- POJ-2141-Message Decowding-解题报告
- [LeetCode]Unique Binary Search Trees, 解题报告
- 【Jason's_ACM_解题报告】The Falling Leaves
- [leetcode] 287. Find the Duplicate Number 解题报告
- [leetcode] 450. Delete Node in a BST 解题报告
- [Leetcode] 346. Moving Average from Data Stream 解题报告
- poj1061青蛙的约会解题报告
- CodeChef December Challenge 2013 解题报告
- POJ1001 求高精度幂 ACM解题报告(高精度模板)
- BZOJ 1093 [ZJOI 2007] Tarjan+DAG拓扑排序DP 解题报告
- POJ 1013 Counterfeit Dollar 解题报告
- 【ACM菜逼解题报告】Boxes in a Line
- Atcoder Beginner 065 – C 解题报告