1.6纪念日(2020年试题B)
代码如下——
#include<iostream>
using namespace std;
bool leapyear(int y){
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main(){
int sum = 0;sum += 24 * 60;sum += 161 * 24 * 60;sum += 182 * 24 * 60;
for (int i = 1922; i <= 2019; ++i){
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}
cout << sum << endl;
}
#include<iostream>
using namespace std;
bool leapyear(int y){
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main(){
long long sum = 0;sum += 24 * 60;sum += 161 * 24 * 60;sum += 182 * 24 * 60;
for (int i = 1922; i <= 2019; ++i){
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}/*cout << sum << endl;*/
printf("%lld", sum);
}
运行结果如下——
如果把2020改成自定义——
代码如下——
#include<iostream>
using namespace std;
bool leapyear(int y)
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main()
{
int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leapmonth[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, y, m, d; cin >> y >> m >> d;
sum += 12 * 60;
sum += 161 * 24 * 60;
if (leapyear(y))
{
for (int i = 0; i < m - 1; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
sum += d*12*60;
}
else
{
for (int i = 0; i < m - 1; i++)
{
sum += (month[i] * 24 * 60);
}
sum += d*12*60;
}
/*sum += 182 * 24 * 60;*/
for (int i = 1922; i < y; ++i)
{
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}
cout << sum << endl;
return 0;
}
运行结果如下——
让我们再改改 改成直接算出某年某天到某年某月某天之间有多少分钟
代码如下——
#include<iostream>
using namespace std;
bool leapyear(int y)
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main()
{
int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leapmonth[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, yy, mm, dd, y, m, d; cin >> yy >> mm >> dd >> y >> m >> d;
sum += 12 * 60;
if (leapyear(yy))
{
for (int i = mm; i < 12; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
sum += (leapmonth[mm]-dd) * 24 * 60;
}
else
{
for (int i = mm; i < 12; i++)
{
sum += (month[i] * 24 * 60);
}
sum += (month[mm] - dd) * 24 * 60;
}
/*sum += 161 * 24 * 60;*/
sum += (d-1) * 24 * 60;
sum+=12*60;
if (leapyear(y))
{
for (int i = 0; i < m - 1; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
}
else
{
for (int i = 0; i < m - 1; i++)
{
sum += (month[i] * 24 * 60);
}
}
/*sum += 182 * 24 * 60;*/
for (int i = yy+1; i < y; ++i)
{
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}
cout << sum << endl;
return 0;
}
运行结果如下——
你以为这就完了吗
不不不不不不不不不不不不
刚刚我们实现了——直接算出某年某天到某年某月某天之间有多少分钟
但是没有精确到某天里的 小时 分钟
让我们用代码来实现——
#include<iostream>
using namespace std;
bool leapyear(int y)
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main()
{
int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leapmonth[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, yy, mm, dd, hh, ff, y, m, d, h, f;
cin >> yy >> mm >> dd >> hh >> ff >> y >> m >> d >> h >> f;
sum += (ff == 0 ? 0:60 - ff);
sum += (ff == 0 ? 24 - hh : 23 - hh)*60;
/*sum += 12 * 60;*/
if (leapyear(yy))
{
for (int i = mm; i < 12; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
sum += (leapmonth[mm] - dd) * 24 * 60;
}
else
{
for (int i = mm; i < 12; i++)
{
sum += (month[i] * 24 * 60);
}
sum += (month[mm] - dd) * 24 * 60;
}
/*sum += 161 * 24 * 60;*/
sum += (d - 1) * 24 * 60;
sum += h * 60;
sum += f;
if (leapyear(y))
{
for (int i = 0; i < m - 1; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
}
else
{
for (int i = 0; i < m - 1; i++)
{
sum += (month[i] * 24 * 60);
}
}
/*sum += 182 * 24 * 60;*/
for (int i = yy + 1; i < y; ++i)
{
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}
cout << sum << endl;
return 0;
}
实现运行结果如下——
让我们多尝试几个案例
哈哈哈哈哈哈哈哈哈好像有点错被发现了
改进后的代码——
#include<iostream>
using namespace std;
bool leapyear(int y)
{
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)return 1;
return 0;
}
int main()
{
int month[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
int leapmonth[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
int sum = 0, yy, mm, dd, hh, ff, y, m, d, h, f;
cin >> yy >> mm >> dd >> hh >> ff >> y >> m >> d >> h >> f;
if (hh != h) sum += (ff == 0 ? 0 : 60 - ff);
if (dd != d) sum += (ff == 0 ? 24 - hh : 23 - hh) * 60;
/*sum += 12 * 60;*/
if (yy != y)
{
if (leapyear(yy))
{
for (int i = mm; i < 12; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
sum += (leapmonth[mm] - dd) * 24 * 60;
}
else
{
for (int i = mm; i < 12; i++)
{
sum += (month[i] * 24 * 60);
}
sum += (month[mm] - dd) * 24 * 60;
}
/*sum += 161 * 24 * 60;*/
if (leapyear(y))
{
for (int i = 0; i < m - 1; i++)
{
sum += (leapmonth[i] * 24 * 60);
}
}
else
{
for (int i = 0; i < m - 1; i++)
{
sum += (month[i] * 24 * 60);
}
}
}
if (mm != m)sum += (d - 1) * 24 * 60;
if (dd != d)sum += h * 60;
if(hh!=h)sum += f;
if (mm == m && dd == d && hh == h)sum += (f - ff);
/*sum += 182 * 24 * 60;*/
for (int i = yy + 1; i < y; ++i)
{
if (leapyear(i)) sum += 366 * 24 * 60;
else sum += 365 * 24 * 60;
}
cout << sum << endl;
return 0;
}
运行结果如下——
不不不不不还有好多没考虑到底的555555555555555555555555555555555555555555555