题目链接
https://vjudge.net/contest/213410#overview
题解
https://github.com/somliy/code/tree/master
坑
- 不存在的
题解
hdu-2011 多项式求和
题意很明确,公式已经给出了
注意:
- 正负交替,这里使用flag *= -1;
的方法
- 在进行运算的时候,如果使用的是int
类型,如需要转换为double
类型
- 函数类型为double
hdu-2005 第几天?
分析题目,计算出该日期是该年的第几天。
首先,每个月份的天数需要知道,2月是需要区分的,需要加上平年闰年的判断,根据年来改变2月的天数。
其次,假如日期为2006/3/12
那么,3月的天数是不需要的,直接1月+2月+12即可
注意:
- 闰年的判断
- 2月随时年德变化而变化
- 把每个月的天数初始化比较简单
hdu-2026 首字母变大写
不知道有没有坑,但是不能没有防坑的意识。
分析题目,输入一个英文句子,将每个单词的第一个字母改成大写字母。
如果是一个单词的话,开始字母前一定有空格(除首单词)
注意:
- 可能单词之间不只是一个空格,要防止这个
- 还有只有一个单词的样例
- 首单词要单独处理
- 使用gets()
方法可以排除空格的影响
hdu-2041 超级楼梯
可以理解为是一个递推,也可以用dfs思想
分析题目,两种走法,一共n阶台阶,使用数组的方法存储走到当前阶的不同走法,例如a[2]=1 a[3]=2
代表走到第2阶一共1中方法,走到3阶一共2种走法
那么a[4]呢,它只能从2或3阶台阶走上去,所以a[4]=a[3]+a[2]
,所以,a[n]=a[n-1]+a[n-2]
注意:
- 打表计算不容易超时(先把4-40阶台阶所有的走法都算出来,根据输入的台阶数直接输出结果)
- 有想法的可以用dfs方法写写试试
hdu-2089 不要62
和上一题一样需要打表
题目分析,要检测有没有62和4,那么换成字符串,只用内置函数就可以直接检测有没有,首先计算出1000005以内的数字,如果n有4或62,那么s[n]=0,反之s[n]=1,所以给出区间就可以直接把m到n的s[]和加出来就是答案了
注意:
- 多组输入
- 只用strstr函数,itoa函数(不知道是什么自己查)
hdu-1715 大斐波数
题目分析,到了F题就不可能是简单题了,肯定有坑,想想1000位的斐波那契数,肯定很大(几百位),long long肯定会爆,乘不下,那么自己构建一个数组,每一个代表每一位,a[0]代表个位,a[1]代表十位,为啥是从做开始数位递增,写写就知道了,这样写好写,剩下的就是模拟加法,有进位
注意:
- 进位可能比原来的数字更长
- 需要打表,用一个二维数组,第一个下表表示输入的位数,第二个下表各个位上的数组
- 输出的时候需要把数字倒过来,即数组倒着输出,要把多余的0过滤
- 注意进位
- 需要初始化前面两个数字
hdu-1716 排列2
全排列,去重,dfs,排序
题目分析,从小到大的顺序输出所有能由这四张卡片组成的4位数,要求很简单,dfs的排序如果输入的时候是从小到大的,那么输出的就是从小到大的,这里使用了函数来全排列,如果不会dfs最好自己写,根据寒假培训的时候的例子
注意:
- 排除0开头的组合
- 什么时候需要多加一个换行
- 输出的时候需要根据情况判断是不是输出,输出的时机
hdu-1718 Rank
虽然是英文题,但是很简单
这个题目的意思是问该学号在考试中获得第几名,当分数相同时并列
把学号当做数组输入即可,不长,但是需要用long long
,这里采用的是倒序,用100减去分数,越小的分数越高,所以只需要一个数组记录人数,下表为1-100,记录分数,值为人数,只需要把此人的前的a数组和加起来,然后加1就是此人的排名
注意:
- 用long long
- 记录这个人的学号
- 排名需要到自己,前面人数加1
那啥,写java版本的不用谢,记得一箱辣条。