已知一个日期和天数, 求多少天后的日期(是那个超时代码的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_ ...
随机推荐
- css随记01编辑技巧,背景与边框
代码优化 一个按钮的例子,使其值同比例变化; button{ color: white; background: #58a linear-gradient(#77a0bb, #58a); paddin ...
- hdu 5459 Jesus Is Here (费波纳茨递推)
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/102400 K (Java/Others)Total Submission ...
- DELPHI与C#语法比较
1.我做了三年的.NET,也是三个月前因为项目需要转的delphi整个过渡差不多要一周到两周.正常情况两周后就能熟悉delphi.delphi可以调整开发环境的,你把他的属性和解决方案窗口调成和你用V ...
- Experimental Educational Round: VolBIT Formulas Blitz
cf的一次数学场... 递推 C 题意:长度<=n的数只含有7或8的个数 分析:每一位都有2种可能,累加不同长度的方案数就是总方案数 组合 G 题意:将5个苹果和3个梨放进n个不同的盒子里的方案 ...
- SPFA+Dinic HDOJ 3416 Marriage Match IV
题目传送门 题意:求A到B不同最短路的条数(即边不能重复走, 点可以多次走) 分析:先从A跑最短路,再从B跑最短路,如果d(A -> u) + w (u, v) + d (B -> v) ...
- HDU4307 Matrix(最小割)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4307 Description Let A be a 1*N matrix, and each ...
- POJ3368 Frequent values(RMQ线段树)
题目大概说给一个递增序列,询问区间出现最多的数. 用莫队算法比较直观,虽然应该会T..好像也可以主席树..不过题目给的序列是有序的,因而相同的数会聚在一起. 考虑把序列分成一段一段,使每段都包含极大的 ...
- BZOJ1841 : 蚂蚁搬家
树分治,对于每个分治结构,维护两棵线段树. 第一棵按dfs序维护所有点到重心的距离,第二棵维护每个分支的最长链. 那么当前结构对答案的贡献就是第二棵线段树的最大值$+$次大值. 对于操作$0$,如果是 ...
- Twitter Storm源代码分析之ZooKeeper中的目录结构
徐明明博客:Twitter Storm源代码分析之ZooKeeper中的目录结构 我们知道Twitter Storm的所有的状态信息都是保存在Zookeeper里面,nimbus通过在zookeepe ...
- JS 特殊字符的魅力
特殊字符的魅力 说在前面—鸭子类型 鸭子类型是动态类型的一种风格,在这种风格中,一个对象有效的语义,不是由继承自特定的类或者实现特定的接口,而是由当前方法和属性的集合决定. “当看到一只鸟走起来像鸭子 ...