题目来自这位博主的回忆 【链接】
部分内容在半猜测半搜索下,找到了原题,并给出了对应的链接,可以在里面提交代码验证。
题目分类
- 时间转换 :模拟题
- 麦森数 : 高精度乘法+快速幂
- 戳气球 :区间DP
1.时间转换
已知某世界时间为以下进制:
100秒1分钟
100分钟1小时
10小时1天
100天1个月
10个月1年
且人类的1天=该世界1天(这个条件巨坑,一小时没看到QAQ)
输入人类世界的一天,格式如下:
h: m:s d.m.y
其中2000<=y<=50000
输出某世界对应的时间,格式如下:
h: m:s d.m.y
其中人类世界的0:0:0 1.1.2000是某世界的0:0:0 1.1.0
题解:
闰年的判定还是需要会。能4不能100,或能400为闰年。然后天以上和天以下分开算,并化为对应的月年和分秒。这个模拟题相对之前较简单,但闰年的区分还是要注意一下。
#include<cstdio>
#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
using namespace std;
int month[12]={
31,28,31,30,31,30,31,31,30,31,30,31};
int countmonth(int i,int year)
{
int tmp=0;
for(int j=0;j<i;j++)
tmp+=month[j];
if((year%4==0&&year%100!=0)||year%400==0)
if(i>2)
tmp+=1;
return tmp;
}
int countyear(int year)
{
int tmp=0;
for(int i=0;i<year;i++)
if((year%4==0&&year%100!=