南阳219----An problem about date

 1 /*
 2 1600年一月一日为星期6,所以算出ymd与1600-1-1差多少天对7取余即可
 3 */
 4 #include<stdio.h>
 5 int a[10000]={0};
 6 int main()
 7 {
 8     int i,y,m,d,t = 0,ans;
 9     for(i=1600; i<9601; i+=4)
10     {
11         if(i%100 != 0 || i%400==0)
12             ++t;
13         a[i-1599] = a[i-1598] = a[i-1597] = a[i-1596] = t;
14     }
15     while(~scanf("%d%d%d",&y,&m,&d))
16     {
17         ans = 5 + (y-1600)*365 + a[y-1600];
18         switch(m)
19         {
20             case 2:d+=31;break;
21             case 3:d+=59;break;
22             case 4:d+=90;break;
23             case 5:d+=120;break;
24             case 6:d+=151;break;
25             case 7:d+=181;break;
26             case 8:d+=212;break;
27             case 9:d+=243;break;
28             case 10:d+=273;break;
29             case 11:d+=304;break;
30             case 12:d+=334;break;
31         }
32         if( (m>2 && y%4==0 && y%100!=0) || y%400==0 && m>2)
33             d++;
34         ans += d;
35         printf("%d\n",ans%7);
36     }
37     return 0;
38 }
 1 //最优解
 2 #include<cstdio>
 3 int main()
 4 {
 5     int y,m,d;
 6     while(~scanf("%d%d%d",&y,&m,&d))
 7     {
 8         if(m<3) m+=12,--y;
 9         printf("%d\n",(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7); //蔡勒公式的变种
10     }
11 }
时间: 2024-12-20 03:46:06

南阳219----An problem about date的相关文章

nyoj 219 An problem about date 日期计算 附加最优代码(基姆拉尔森公式)

第一次直接计算的   超时了.后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面 #include <stdio.h> int main() { int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day; long long b[9605]={0},sum=0; for(int i=1600;i<9600;i++) { if(i%4==0&&i%100||i%400==0) sum+=3

NYOJ-219 An problem about date

An problem about date 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. 输入 每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间; 输出 输出对应的星期,用一个整数表示;(星期一到星期六用1-6表示,星期日用0表示) 样例输入 2011 3 6 1949 10 1 2011 4 1 1945 8 15 样例输出

An problem about date

An problem about date 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. 输入 每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间; 输出 输出对应的星期,用一个整数表示;(星期一到星期六用1-6表示,星期日用0表示) 样例输入 2011 3 6 1949 10 1 2011 4 1 1945 8 15 样例输出

NYOJ219 An problem about date 【数学】

An problem about date 时间限制:2000 ms  |  内存限制:65535 KB 难度:2 描述 acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. 输入 每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间; 输出 输出对应的星期,用一个整数表示;(星期一到星期六用1-6表示,星期日用0表示) 样例输入 2011 3 6 1949 10 1 2011 4 1 1945 8 15 样例输出

南阳524 A-B Problem

A-B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧. 现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢? 输入 有多组测试数据.每组数据包括两行,分别代表A和B. 它们的位数小于100,且每个数字前中可能包含+,- 号. 每个数字前面和后面都可能有多余的0. 每组测试数据后有一空行. 输出 对于每组数据,输出一行. 如果A-B=0,输出YES,否则输出NO

南阳844--A+B Problem(V)

A+B Problem(V) 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 做了A+B Problem之后,Yougth感觉太简单了,于是他想让你求出两个数反转后相加的值.帮帮他吧 输入 有多组测试数据.每组包括两个数m和n,数据保证int范围,当m和n同时为0是表示输入结束. 输出 输出反转后相加的结果. 样例输入 1234 1234 125 117 0 0 样例输出 8642 1232 来源 Yougth原创 1 #include<stdio.h> 2 #i

An problem about date 根据年月日计算 星期几

/W = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7(1.2月需要看作上一年的13.14月) #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<algorithm> #include<queue> #include<vector> #include<set>

剑指架构师系列-MySQL调优

介绍MySQL的调优手段,主要包括慢日志查询分析与Explain查询分析SQL执行计划 1.MySQL优化 1.慢日志查询分析 首先需要对慢日志进行一些设置,如下: SHOW VARIABLES LIKE 'slow_query_log'; -- 查看是否开启了慢查询 SET GLOBAL slow_query_log_file='/var/lib/mysql/mysql-slow.log'; -- 设置慢查询日志的位置 SET GLOBAL log_queries_not_using_inde

oracle 报错 :ORA-04052、 ORA-00604、 ORA-03106、 ORA-02063

最近发现一个很奇怪的问题: 创建了一个DB_LINK连接另一个Oracle数据库. select * from [email protected]; 单句执行没问题,但是把这句SQL写到存储过程内: create or replace procedure prc_testisbegininsert into testselect * from [email protected];commit; end; 就发生如下错误,存储过程编译不通过: 报错如下:PACKAGE BODY SKSKJ.PKG