洛谷刷题题解(看见我请提醒我更新)

P1000超级玛丽游戏

毫无技术可言,无脑复制粘贴,结束。推荐使用c++的cout,因为看着舒服。

P5704【深基2.例6】字母转换

查询ASCII码表可知,‘0’为48 ,‘9’为57 , ‘A’为65 ,‘a’为97,‘B’为58 ,‘b’为98

易得小写字母等于大写字母+32。char类型可作为十进制的整数参与运算。

P5709【深基2.习6】Apples Prologue / 苹果和虫子

考虑极限情况,吃了0个,时间分母不为0,其次,吃完后不会出现负数。

当吃到一半时结束,不能算作完整的苹果。注意细节。

P2181对角线

勾八数学题,不会。

ww3113306说:“首先由于不会有三条对角线交于一点,所以过某一个交点有且只能有2条对角线而这两条对角线实质上是确定了4个顶点(也可以看做是一个四边形的两条对角线交于一点,求四边形的数量)。因此我们只需要确定4个顶点就得到了这个唯一确定的交点。因此我们只需要求这样4个顶点的搭配有多少个了也就是从n个顶点中取4个出来。

根据组合数的公式,(如果你不知道组合数的公式可以这么推:第一次取可以n个点都是可以取的,第二次取的时候第一个取的点就不能取了,所以只能取(n-1)种,以此类推)由于改变四个点的顺序不会改变对角线,因此是求的组合而不是排列,也就要除以4!,也就是24

于是我们就得到了公式: n * (n-1) * (n-2) * (n-3) / 24同时为了防止爆掉,但又不想写高精,我们可以采用一种化简的技巧于是原式可以化为:n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4

那为什么这样一定是对的呢?难道不会因为除不尽却向下取整而导致错误吗?事实上是一定除得尽的首先n和n-1一定有一个是2的倍数,因此2可以除尽,

同理n,n-1,n-2中一定有一个是3的倍数,因此3可以除尽(除掉2只会消除因数2而对3没有影响)同理4也可以除尽。”

P5707【深基2.例12】上学迟到

注意一下提前一天出发的情况就行了。

P5711【深基3.例3】闰年判断

 能被4整除却不能被100整除或能被400整除的年份就是闰年!

P5714【深基3.例7】肥胖问题

c++语言使用cout默认精度

非c++语言需要注意为6位有效数字,而不是六位小数。

c语言中保留n位有效数字:

若规定宽度为p,小数q位,用%p.qf输出

若规定整数+小数一共n位有效,用%.ng输出

P1055【NOIP2008 普及组】 ISBN 号码

使用字符数组存储ISBN号码,在使用时抽出单个字符,然后使用强制类型转换转换成int类型。

字符串输入方式:gets(name); scanf(“%s”,name)

字符输入方式:getchar(score); scanf (%c,score)

P5717【深基3.习8】三角形分类

对三角形三条边进行判断时,首先对三条边进行排序。其次判断能否组成三角形,即两边之和大于第三边。其次由三边关系来判断角度关系(只可能有一种情况),最后判断等腰与等边。若为等边则必为等腰。

尤其注意换行符不能多输出!

P4414[COCI2006-2007#2] ABC

对三个数字进行大小的排序。建议不要使用数组存储ABC,为什么会错,我也不知道。但是可以用循环语句,三次分别输入什么字母则输出对应的数字。

你可能感兴趣的:(c语言)