USACO 又完成了1.1的两个简单题目
通过这两个题目练习了代码的熟练程度
发现了一个很好的网址: http://www.nocow.cn/index.php/USACO_Training
一个OIER做的wiki 里面有USACO题目的翻译和标程
了解到了 蔡勒公式 一个计算 星期的公式。
即随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
详见:
http://baike.baidu.com/view/598757.htm
附上两题的代码
发现了一个很好的网址: http://www.nocow.cn/index.php/USACO_Training
一个OIER做的wiki 里面有USACO题目的翻译和标程
了解到了 蔡勒公式 一个计算 星期的公式。
即随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
详见:
http://baike.baidu.com/view/598757.htm
附上两题的代码
1
/*
2 ID: hongtaozhy
3 LANG: C++
4 TASK: gift1
5 */
6 #include < stdio.h >
7 #include < string .h >
8 char name[ 10 ][ 15 ];
9 char temp[ 15 ],temp2[ 15 ];
10 int money[ 10 ];
11 int rec;
12 int key;
13 int main () {
14
15 freopen ( " gift1.in " , " r " ,stdin);
16 freopen ( " gift1.out " , " w " ,stdout);
17 int n ;
18 int i ;
19 scanf( " %d " , & n);
20
21 for ( int i = 0 ; i < n ; i ++ )
22 scanf( " %s " ,name[i]);
23
24 while (scanf( " %s " ,temp) != EOF){
25 key = 0 ;
26 for ( int i = 0 ; i < n ; i ++ ){
27 if ( ! strcmp(name[i],temp)){
28 rec = i ;
29 break ;
30 }
31 }
32 int nn;
33 int mon;
34
35
36 scanf( " %d%d " , & mon, & nn);
37 if ( nn != 0 )
38 key = mon - ( mon / nn ) * nn ;
39 money[rec] -= mon ;
40 money[rec] += key ;
41
42 for ( int i = 0 ; i < nn ; i ++ ){
43
44 scanf( " %s " ,temp2);
45 for ( int j = 0 ; j < n ; j ++ ){
46 if ( ! strcmp(name[j],temp2)){
47 rec = j ;
48 break ;
49 }
50 }
51
52 money[rec] += mon / (nn) ;
53
54
55 }
56 }
57
58 for ( int i = 0 ; i < n ; i ++ ){
59 printf( " %s %d\n " ,name[i],money[i]);
60 }
61
62
63 return 0 ;
64 }
65
2 ID: hongtaozhy
3 LANG: C++
4 TASK: gift1
5 */
6 #include < stdio.h >
7 #include < string .h >
8 char name[ 10 ][ 15 ];
9 char temp[ 15 ],temp2[ 15 ];
10 int money[ 10 ];
11 int rec;
12 int key;
13 int main () {
14
15 freopen ( " gift1.in " , " r " ,stdin);
16 freopen ( " gift1.out " , " w " ,stdout);
17 int n ;
18 int i ;
19 scanf( " %d " , & n);
20
21 for ( int i = 0 ; i < n ; i ++ )
22 scanf( " %s " ,name[i]);
23
24 while (scanf( " %s " ,temp) != EOF){
25 key = 0 ;
26 for ( int i = 0 ; i < n ; i ++ ){
27 if ( ! strcmp(name[i],temp)){
28 rec = i ;
29 break ;
30 }
31 }
32 int nn;
33 int mon;
34
35
36 scanf( " %d%d " , & mon, & nn);
37 if ( nn != 0 )
38 key = mon - ( mon / nn ) * nn ;
39 money[rec] -= mon ;
40 money[rec] += key ;
41
42 for ( int i = 0 ; i < nn ; i ++ ){
43
44 scanf( " %s " ,temp2);
45 for ( int j = 0 ; j < n ; j ++ ){
46 if ( ! strcmp(name[j],temp2)){
47 rec = j ;
48 break ;
49 }
50 }
51
52 money[rec] += mon / (nn) ;
53
54
55 }
56 }
57
58 for ( int i = 0 ; i < n ; i ++ ){
59 printf( " %s %d\n " ,name[i],money[i]);
60 }
61
62
63 return 0 ;
64 }
65
1
/*
2 ID: hongtaozhy
3 LANG: C++
4 TASK: friday
5 */
6 #include < stdio.h >
7 int mon[ 12 ] = { 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };
8 int day[ 7 ];
9
10 int main () {
11 freopen ( " friday.in " , " r " ,stdin);
12 freopen ( " friday.out " , " w " ,stdout);
13
14 int i,j,l = 6 ,n;
15 scanf( " %d " , & n);
16 n += 1900 ;
17 for (i = 1900 ;i < n;i ++ ){
18 if ((i % 100 != 0 && i % 4 == 0 ) || i % 400 == 0 )mon[ 1 ] ++ ;
19 for (j = 0 ;j < 12 ;j ++ ){
20 day[l] ++ ;
21 l += mon[j];
22 l %= 7 ;
23 }
24 mon[ 1 ] = 28 ;
25 }
26 printf( " %d " ,day[ 6 ]);
27 for (i = 0 ;i < 6 ;i ++ )
28 printf( " %d " ,day[i]);
29 printf( " \n " );
30
31 return 0 ;
32 }
33
2 ID: hongtaozhy
3 LANG: C++
4 TASK: friday
5 */
6 #include < stdio.h >
7 int mon[ 12 ] = { 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 };
8 int day[ 7 ];
9
10 int main () {
11 freopen ( " friday.in " , " r " ,stdin);
12 freopen ( " friday.out " , " w " ,stdout);
13
14 int i,j,l = 6 ,n;
15 scanf( " %d " , & n);
16 n += 1900 ;
17 for (i = 1900 ;i < n;i ++ ){
18 if ((i % 100 != 0 && i % 4 == 0 ) || i % 400 == 0 )mon[ 1 ] ++ ;
19 for (j = 0 ;j < 12 ;j ++ ){
20 day[l] ++ ;
21 l += mon[j];
22 l %= 7 ;
23 }
24 mon[ 1 ] = 28 ;
25 }
26 printf( " %d " ,day[ 6 ]);
27 for (i = 0 ;i < 6 ;i ++ )
28 printf( " %d " ,day[i]);
29 printf( " \n " );
30
31 return 0 ;
32 }
33