目录
时间显示
代码
星期计算
代码
星系炸弹
代码
第几天
纪念日
代码
时间显示
时间显示

这道题主要是单位换算。
①单位换算
②输出格式:
a. 不足两位补前导零。利用printf输出
b. 注意 long long 输出格式应该是 %lld 长整型
代码
#include <iostream>
using namespace std;
int main()
{
  long long a;
  cin>>a;
  long long d=a/1000%86400;//余下的是当前这一天的时间:单位是秒
  long long h=d/3600;
  d%=3600;//剩下的是当前这个小时的时间:单位是秒
  long long m=d/60;
  d%=60;
  long long s=d;
  printf("%02lld:%02lld:%02lld",h,m,s);
  return 0;
}星期计算
星期计算

我们知道直接用20的22次方模上7,看余数是几,用最开始的6加上余数,直接输出结果就行。
但是需要注意的是,20的22次方数太大了。即使使用long long类型也会溢出,导致结果错误。
因此我们在每次*20之后都直接%7,这样对结果是没有影响的。
代码
因为是填空题,直接输出就可以。
#include <iostream>
using namespace std;
int main()
{ 
  /*
  long long a=1;
  for(int i=1;i<=22;i++)
  {
    a*=20;
    a%=7;
  }
  long long c=a%7;
  cout<<c;*/
  cout<<"7";
  return 0;
}星系炸弹
星系炸弹

注意:
①1月1号放置,定时15天,1号爆炸。因此询问中定时1000天,爆炸的日期输出的应该是第1001天。
②判断闰年的两个条件
③if语句比较多,注意一下判断相等是双等号。另一个是括号匹配。
④输出格式
代码
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
  int flag=0;
  int cnt=0;
  for(int y=2014;y<2022;y++)
  {
    for(int m=1;m<=12;m++)
    {
      for(int d=1;d<=31;d++)
      {
        if(m==1 ||m==3 ||m==5 ||m==7 ||m==8 ||m==10 ||m==12);
        else if(m==2){
          if(y%400==0 || (y%4==0&& y%100!=0))
          {
            if(d>29)break;
          }
          else {
            if(d>28)break;
          }
        }
        else {
          if(d>30)break;
        }
        if(y==2014 && m==11 && d==9)flag=1;//从该日期进行计数
        if(flag)cnt++;
        if(cnt==1001){
          printf("%d-%02d-%02d",y,m,d);
          return 0;
        }
      }
    }
  }
  return 0;
}写这道题是为了了解一下这种写法。xx天之后的日期这种,数据可能有点大这种表格不太好做的,都可以用这个模板枚举日期。只是把后面的if判断语句根据题目不同改一下就行。
第几天
第几天

像这个都是同一年的就可以直接用excel做。改一下单元格格式在填充就行。

答案是125
纪念日
(这个没找到原题链接)

这个也是枚举日期,和星系炸弹用一个模板。
这道题要注意的就是:
①分钟。所以把+1天变成加上1天的分钟数即+60*24= +1440
②注意1923年7月23日12时到2020年7月1日12时,前者那天只有12小时,后者这一天也是只有12小时,但是我们计算的时候把它当完整的一天进行计算,因此最终输出的时候要减去一天即1440分钟。
代码
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int flag=0;
    int cnt=0;
    for(int y=1921;y<=2020;y++)
    {
        for(int m=1;m<=12;m++)
        {
            for(int d=1;d<=31;d++)
            {
                if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12);
                else if(m==2)
                {
                    if((y%4==0&&y%100!=0) || y%400==0)
                    {
                        if(d>29)break;
                    }
                    else {
                        if(d>28)break;
                    }
                }
                else {
                    if(d>30)break;
                }
                
                if(y==1921 && m==7 && d==23)flag=1;
                if(flag)cnt+=1440;
                if(y==2020 && m==7 && d==1)
				{
					cout<<cnt-1440;
					return 0;
				}
            }
        }
    }
    return 0;
}还有个回文日期还没写出来我看难度等级是困难呢,先不写或者分开写吧hh.
有问题欢迎指出,一起加油!!!



















