欢迎辞欢迎来到“笃志以砺,决起而飞”! 如果您是第一次来到本站,建议访问 本站导读以便更快地了解本站。 如果您喜欢本站, 欢迎订阅。 | 描述 13号又是星期五是一个不寻常的日子吗?13号在星期五比在其他日少吗?为了回答这个问题,写一个程序来计算在n年里13日落在星期一,星期二……星期日的次数.这个测试从1900年1月1日到1900+n-1年12月31日.n是一个非负数且不大于400. 这里有一些你要知道的: 1900 年1月1日是星期一.4,6,11和9月有30天.其他月份除了2月都有31天.闰年2月有29天,平年2月有28天.年份可以被 4整除的为闰年(1992=4*498 所以 1992年是闰年,但是1990年不是闰年)以上规则不适合于世纪年.可以被400整除的世纪年为闰年,否则为平年.所以,1700,1800,1900 和2100年是平年,而2000年是闰年.请不要预先算好数据。 格式 PROGRAM NAME: friday INPUT FORMAT: (file friday.in) 一个整数n. OUTPUT FORMAT: (file friday.out) 七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一…星期五的次数. SAMPLE INPUT 20 SAMPLE OUTPUT 36 33 34 33 35 35 34 我的程序 { ID:cxj6661 PROB:friday LANG:PASCAL } Program friday; var a:array[0..400,1..12]of integer; sl:array[1..7]of integer; i,j,p,lp,n,li:longint; Function getDay(p,q:integer):integer; var i:integer; begin i:=1900+p; if (q=1)or(q=3)or(q=5)or(q=7)or(q=8)or(q=10)or(q=12) then exit(31); if (q=2) then if ((i mod 100=0)and(i mod 400=0))or((i mod 100<>0)and(i mod 4=0)) then exit(29) else exit(28); exit(30); end; [...] 描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r b b b b b b r b r r b r b r r r b r [...] 有点晚了,但是,USACO很能考验基础数据结构和算法的熟练度。 题目描述 对于一群要互送礼物的朋友,你要确定每个人收到的礼物比送出的多多少(and vice versa for those who view gift giving with cynicism)(,反之亦然对于那些用贪婪的眼光来看礼物的人(by John))。 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。 然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。 给出一群朋友, 没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送出的钱多的数目。 格式 PROGRAM NAME: gift1 INPUT FORMAT: (file gift1.in) 第 1 行: 人数NP,2<= NP<=10 第 2到 NP+1 行:这NP个在组里人的名字 一个名字一行 第NP+2到最后: 这里的NP段内容是这样组织的: 第一行是将会送出礼物人的名字。 第二行包含二个数字: 第一个是原有的钱的数目(在0到2000的范围里),第二个 NGi 是将收到这个送礼者礼物的人的个数 如果 NGi 是非零的, 在下面 NGi 行列出礼物的接受者的名字,一个名字一行。 OUTPUT FORMAT: (file gift1.out) 输出 NP [...] 首先声明这个文章不是我原创,功劳归 Matrix67(First Published By Matrix67)但合并,整理 + 改编后效果更好,也删除和添加了一些东西,献给所有需要的人。首先还是从最基础的东西说起。 什么是位运算? 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算 符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理): 110 AND 1011 ———- 0010 –> 2 由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。当然有人会说,这个快了有什么用,计算6 and 11没有什么实际意义啊。这一系列的文章就将告诉你,位运算到底可以干什么,有些什么经典应用,以及如何用位运算优化你的程序。 Pascal和C中的位运算符号 下面的a和b都是整数类型,则: C语言 | Pascal语言 ——-+————- a & b | a and b a | b | a or b a ^ b | a xor b ~a | not a a << b | a shl b a >> b | a shr b [...] | |
近期评论