- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七周 日期和时间处理
这类问题一般会涉及不同日历表示法之间的相互转换。 解决此类问题的基本思想是找到一种公共的基准。并通过基准进行不同日历之间的转换。 日期和时间处理问题一般不涉及很难的算法.但有时会有一些特殊情况需要处理,如果考虑不到就会出错。因此需要一些耐心处理细节问题,可以比较好地训练编程的严谨性。 细菌繁殖 问题描述一种细菌的繁殖速度是每天成倍增长。例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,……。现在给出第一天的日期和细菌数目,要你写程序求出到某一天的时候,细菌的数目。 Input第一行有一个整数n,表示测试数据的数目。其后n行每行有5个整数,整数之间用一个空格隔开。第一个数表示第一天的月份,第二个数表示第一天的日期,第三个数表示第一天细菌的数目,第四个数表示要求的那一天的月份,第五个数表示要求的那一天的日期。已知第一天和要求的一天在同一年并且该年不是闰年,要求的一天一定在第一天之后。数据保证要求的一天的细菌数目在长整数(long)范围内。 Output对于每一组测试数据,输出一行,该行包含一个整数,为要求的一天的细菌数。 Sample Input2 1 1 1 1 2 2 28 10 3 2 Sample Output2 40 解题思路 关键是求出给定的两天之间间隔的天数,即第一天的细菌乘以2的m次方。 每个月的天数不是很规则,可以使用一个数组将每个月的天数存起来。 计算过程如下: 读入测试样例数n; 做n次: (1)读人两个日期及第一天的细菌数; (2)将两个日期转换为当年的第几天; (3)得到两个天数的差.即它们中间间隔的天数m; (4)用第一天的细菌数乘以2的m次方得到x (5)输出x。 参考程序一: #includestdio.h void main() { int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int n; scanf(“%d”, n); for(int i=0; in; i++){ int month_1, day_1, month_2, day_2, num;//起止日期的月份和日期 scanf(“%d%d%d%d%d, month_1, day_1, num, month_2, day_2); int sum = 0; for(int k=month_1; kmonth_2; k++){ sum += days[k-1];} sum -= day_1; sum += day_2; long nNum = num; for(k = 0; ksum; k++){ nNum *= 2;} printf(“%d\n”, nNum); } } 参考程序二: includestdio.h int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; void main() { int times; scanf(“%d”, times); int mon1, date1, mon2, date2, num1; while(times--) { scanf(“%d%d%d%d%d”, mon1, date1, num1, mon2, date2); int days = date2 – date1; for(int i = mon1; imon2; i++){ days += month[i];} long num = num1; for(int j=0; jdays; j++){ num *= 2;} printf(“%d\n”, num); } } 问题一: #includestdio.h #includemath.h int dayofmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31}; void main() { int n; scanf(“%d”, n); int a, b, nu
文档评论(0)