【清华软院机试】2018年预推免机试及题解


题目来自这位博主的回忆 【链接】
部分内容在半猜测半搜索下,找到了原题,并给出了对应的链接,可以在里面提交代码验证。

题目分类

  • 时间转换 :模拟题
  • 麦森数 : 高精度乘法+快速幂
  • 戳气球 :区间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!=
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值