您的位置:首页 > 编程语言 > C语言/C++

简单题目练习一,题解(C++版)

2018-02-26 20:07 302 查看

题目链接

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
=a[n-1]+a[n-2]


注意:

打表计算不容易超时(先把4-40阶台阶所有的走法都算出来,根据输入的台阶数直接输出结果)

有想法的可以用dfs方法写写试试

hdu-2089 不要62

和上一题一样需要打表

题目分析,要检测有没有62和4,那么换成字符串,只用内置函数就可以直接检测有没有,首先计算出1000005以内的数字,如果n有4或62,那么s
=0,反之s
=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版本的不用谢,记得一箱辣条。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: