已知一个日期和天数, 求多少天后的日期(是那个超时代码的AC版)
#include <stdio.h>
#include <string.h>
int m2 = ;
int judge_year(int x)
{ if(x % == || x % == && x % != )
return ;
else
return ; } //extern int m2;
int calculate_year(int *x, int y)
{ //extern int m2 = ;//出现 cannot initialize extern variables with block scope错误,即不能在块作用域里声明全局变量 int span = ;
while(*x - span >= ){ y++;/*天数满一年加1*/
*x -= span;/*减去今年的天数*/
span = judge_year(y) ? : ;/*判断下一年的天数*/ }
m2 = judge_year(y) ? : ;/*判断几天后2月份的天数*/
return y; }
//extern int m2;
int calculate_month(int *x, int m)
{ int span = ;
while(*x - span >= ){ m++;
*x -= span;
if(m == || m == || m == || m == || m == || m == || m == )
{ span = ; }
else if(m == || m == || m == || m == )
{ span = ; }
else
{ span = m2; } }
return m; } extern int m2;
int main()
{ int year = , month = , day = , L_year, L_month, sum, X_sum;
char s[];
//int m2=29;
while(scanf("%d", &sum) && sum != -){ day = ;
X_sum = sum;
L_year = calculate_year(&sum, year);
L_month = calculate_month(&sum, month);
day += sum;
switch(X_sum % )
{ case : strcpy(s, "Friday"); break;
case : strcpy(s, "Saturday"); break;
case : strcpy(s, "Sunday"); break;
case : strcpy(s, "Monday"); break;
case : strcpy(s, "Tuesday"); break;
case : strcpy(s, "Wednesday"); break;
case : strcpy(s, "Thursday"); }
printf("%d-", L_year);
if(L_month <= )
printf("0%d-", L_month);
else
printf("%d-", L_month);
if(day <= )
printf("0%d ", day);
else
printf("%d ", day);
printf("%s\n", s);
// printf("%d %d %d\n", L_year, m2, L_month); }
return ; }
一个学姐路过,看到我的代码,认为没有那么麻烦,于是自己写了一个,
#include <stdio.h>
#include <string.h>
int judge_year(int x)
{ if(x % == || x % == && x % != )
return ;
else
return ; }
int main()
{
int year = , month = , day = ,sum,week,i;
int ans[]={,,,,,,,,,,,},a[]={,};
char s[][]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};
while(scanf("%d", &sum) && sum != -)
{
week=sum%;
year = , month = , day = ;
while(sum>=a[judge_year(year)])
{
sum-=a[judge_year(year)];
year++;
}
if(judge_year(year))
ans[]=;
else
ans[]=;
for(i=;i<;i++)
{
if(sum>=ans[i])
{
sum-=ans[i];
month++;
}
else
break;
}
day+=sum;
printf("%4d-%02d-%02d %s\n",year,month,day,s[week]);
}
return ;
}
跟我的执行时间等等一样,但长度明显短了许多。
已知一个日期和天数, 求多少天后的日期(是那个超时代码的AC版)的更多相关文章
- 已知一个正整数m,编写一个程序求m的反序数(待消化)
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/5 21:08 * @description ...
- 面试题: 已知一个含有n个不同元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的)
TX面试题2: 已知一个含有n个元素的集合,要求打印其所有具有k个元素的子集(不允许有重复的) 题目分析, 为了便于说明,不妨将问题简化一下: 已知一个盒子中有n个不同的球,分别标记为{a1,a2,. ...
- 已知一个字符串S 以及长度为n的字符数组a,编写一个函数,统计a中每个字符在字符串中的出现次数
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 21:04 * @description ...
- 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数rand10(),该函数能够生成1-10的随机数。
题目: 已知一个函数rand7()能够生成1-7的随机数,请给出一个函数,该函数能够生成1-10的随机数. 思路: 假如已知一个函数能够生成1-49的随机数,那么如何以此生成1-10的随机数呢? 解法 ...
- 转 已知两点坐标和半径求圆心坐标程序C++
数学思想:利用圆方程和直线方程 已知两点坐标和半径求圆心坐标程序 #include <iostream> #include <fstream> #include <c ...
- java面试题:已知一个数组[2,4,6,2,1,5],将该数组进行排序(降序,不能用工具类进行排序),创建两条线程交替输出排序后的数组,线程名自定义
package com.swift; import java.util.Arrays; import java.util.Comparator; public class ArrayThread_Te ...
- 已知一个序列A1.A2….An,给你一个整数K,找到满足所有Ai+Aj>=k的数对(i,j)的个数
#include<bits/stdc++.h> using namespace std; #define ll long long #define maxn 100010 /* 已知一个序 ...
- poj1190,DFS/已知一个等式,求另一个最小值
7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱. ...
- NX二次开发-UFUN已知两个向量方向求夹角角度UF_VEC3_angle_between
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_vec.h> #include <uf_ ...
随机推荐
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...
- RabbitMQ常用命令
创建一个用户为mytest,密码为mytest rabbitmqctl add_user mytest mytest 删除一个用户 rabbitmqctl delete_user username ...
- hdu2639 01背包第K优解
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #i ...
- react-redux(1)
基础 Array.prototype.reduce //类似的核心思想 const initState = ''; const actions = ['a', 'b', 'c']; const new ...
- css3 -- 媒体查询
媒体查询: 1.媒体查询优点:基于设备的属性检测设备,这样一来就不需要使用浏览器探测脚本,之后允许直接安装设备的功能去设定目标样式表,也就是说检测用户使用小屏幕的设备,css规则就会调整以适应该屏幕的 ...
- HTML5 postMessage 和 onmessage API 详细应用
随着 HTML5 的发展,了解并熟悉 HTML5 的 API 接口是非常重要的.postMessage(send) 和 onmessage 此组 API 在 HTML5 中有着广泛的应用,比如 Web ...
- ural 2063. Black and White
2063. Black and White Time limit: 1.0 secondMemory limit: 64 MB Let’s play a game. You are given a r ...
- 厉害了,摩托罗拉发布全球首款支持VR和AR的手机MotoZ
目前支持谷歌daydream移动VR生态系统的手机型号并不多,除了谷歌自家的Pixel系列外,还有华为推出的mate9系列.如今又到了一位新成员,即升级到Android 7.0后的Moto Z. 更为 ...
- UIView 的属性opaque详解
该属性用法决定与该消息的接受者是否让其视图透明. 该属性的用处在于:给绘图系统提供一个性能优化开关. 当该值设计为YES,那么绘图系统会把它当作不透明看待,那么在执行绘图的时候会优化绘图一些操作,并且 ...
- 洛谷 P1341 无序字母对 Label:欧拉路 一笔画
题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入输出格式 输入格式: 第一行输入一 ...