• 【CSDN编程竞赛·第四期】个人参赛经历和个人建议


    大家好,我前不久参加了官方举办的CSDN编程比赛,官方举办了四期,第一期的时候没看到,错过了,后面的每一期我都参加了,总的感觉来说,还可以。下面我具体说说第四期相关经验吧。

    目录

    1、小玉家的电费

    题目描述:

    示例:

    代码及思路:

    2、单词逆序

    题目描述:

    示例:

    代码及思路:

    3、小Q整数分割

    题目描述:

    示例:

    代码及思路:

    4、新型美丽数列

    题目描述:

    示例:

    代码及思路:

    比赛小结及对官方的建议

    小结:

    给官方的一些建议


    1、小玉家的电费

    时间限制:1000ms                        内存限制:256M

    题目描述:

    小玉家今天收到了一份电费通知单。上面写着:月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行;月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行;月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行。请根据电价规定,计算出应交的电费应该是多少。

    输入描述:
    输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。

    输出描述:
    输出一个数,保留到小数点后1位(单位以元计,保留到小数点后一位)。

    示例:

    输入

    267

    输出

    121.5


    代码及思路:

    题目言简意赅,纯签到,照着题目写就完事了.用c语言就可以实现,三个条件语句,这题比较简单。

    1. #include
    2. float solution(int m){
    3. float result;
    4. if(m<=150)
    5. result=m*0.4463;
    6. else if (m<=400)
    7. result=150*0.4463+(m-150)*0.4663;
    8. else ;
    9. // TODO: 请在此编写代码
    10. return result;
    11. }
    12. int main() {
    13. int m;
    14. scanf("%d", &m);
    15. float result = solution(m);
    16. printf("%.1f", result);
    17. return 0;
    18. }

    2、单词逆序

    时间限制:1000ms                        内存限制:256M

    题目描述:

    对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成, 你需要将这些部分逆序。 给定一个原字符串A,请返回逆序后的字符串。例,输入”I am a boy!“输出”boy! a am I“

    输入描述:
    输入一行字符串str。(1 <= strlen(str) <= 10000)

    输出描述:
    返回逆序后的字符串

    示例:

    输入

    It's a dog!

    输出

    dog! a It's

    代码及思路:

    建立个二维数组就可以,函数原型:int wordReverse(char s,char wd[10][20]),接收字符串,并把串中单词提取出来存放在二维数组wd[10][20]中,函数返回单词数量。逆序后的单词,在主函数中输出。

    1. #include
    2. int wordReverse(char *s,char wd[200][200])
    3. {
    4. int i,j=0,k=0;
    5. for(i=0;s[i];i++)
    6. {
    7. if(s[i]!=' ')
    8. wd[j][k++]=s[i];
    9. else
    10. {wd[j][k]='\0';
    11. j++;
    12. k=0;
    13. }
    14. }
    15. wd[j][k]='\0';
    16. return j;
    17. }
    18. int main()
    19. {
    20. int i,n;
    21. char str[10000],word[200][200];
    22. gets(str);
    23. n=wordReverse(str,word);
    24. for(i=n;i>=0;i--)
    25. printf("%s ",word[i]);
    26. printf("\n");
    27. return 0;
    28. }

    3、小Q整数分割

    时间限制:1000ms                        内存限制:256M

    题目描述:

    小Q决定吧一个整数n,分割成k个整数。

    每个整数必须大于等于1。

    小Q有多少方案。

    输入描述:
    输入整数n,k。(1 <= n, k<= 100)

    输出描述:
    输出方案数。答案对1e9+7取模。

    示例:

    输入

    3 3

    输出

    1

    代码及思路:

    我们可以将整数n看成是由n个1组成的数列,因此每两个1之间就会存在一个间隙,我们可以通过取间隙的方法将n份1分为k段。

    因此,我们可以很容易得出n个数就会有n-1个间间隙,要分成k段就需用到k-1个间隙,如此,问题就转化为了我们排列组合问题。方案数 = (n - 1)(n - 2)……(n - k + 1) / 1 / 2 / …… / (k - 1)。

    1. #include
    2. #include
    3. int count;
    4. void select(int step,int cur,int n,int k,int sum)
    5. {
    6. int i;
    7. if(sum>n)return;
    8. if(step>k)
    9. {
    10. if(n==sum)
    11. count++;
    12. return;
    13. }
    14. for(i=cur;i
    15. {
    16. select(step+1,i,n,k,sum+i);
    17. }
    18. }
    19. int main()
    20. {
    21. int n,k;
    22. scanf("%d%d",&n,&k);
    23. printf("%d",count);
    24. return 0;
    25. }

    4、新型美丽数列

    时间限制:1000ms                        内存限制:256M

    题目描述:

    定义美丽数列A:
    1. 数列中相邻的数越是靠内相对大小加一,a[2]=a[1]+1,a[n-2]=a[n-1]+1…
    2. 距离边缘距离相等的数的大小相等:a[0] = a[n-1],a[1] = a[n-2]…
    通过修改数列中的值使得给定数列变成美丽数列。
    修改后的值必须仍是正整数。

    输入描述:

    1. 第一行输入整数n。(1 <= n <= 1000)表示数列的大小。
    2. 第二行输入n个整数。

    输出描述:

    输出最小修改次数。

    示例:

    输入

    1. 3
    2. 1 1 1

    输出

    1

    代码及思路:

    题目的意思蛮好理解的,就是要实现一个值先递增后递减的列表,同时列表满足相邻的值相差1,及左右对称的金字塔型数列。

    很是抱歉,这题我不会解,官方也没有给答案,代码后续会补充。

    比赛小结及对官方的建议

    小结:

    加上本次第四期的比赛,一共是参与了第二期、第三期、第四期,三次比赛。第四期没有再出现第三期出现的选择题类型,还是蛮庆幸的,毕竟之前的选择题覆盖的知识面(语言知识)还是蛮广的,而这次的全编程题倒是能让参赛的大伙更从容一些。

    给官方的一些建议:

    1. 首先是题目方面,在描述上可以再清晰准确些,不然容易出现歧义。
    2. 在模板方面,毕竟是编程题,题目直接给出模板后反而更偏向函数题类型。
    3. 希望官方可以出一个模拟考试的入口,和每日一练的编程题相结合。
    4. 官方可以在每次竞赛结束后,可以以直播,博客的形式,解析考试内容的思路。

    今天就介绍到这里。

  • 相关阅读:
    [Hive] Map类型在表中是如何存储的
    python关键字
    Tesseract .Net SDK C# OCR 2022.1
    二重积分一般计算步骤
    Shapiro-Wilk正态性检验(Shapiro和Wilk于1965年提出)
    220V转18V非隔离降压芯片:满足多种应用需求
    华为小型智能园区网络解决方案
    学C++要不要先学C语言?
    Jenkins+Docker 一键自动化部署 SpringBoot 项目
    Transformers are RNNs (linear transformer)论文阅读
  • 原文地址:https://blog.csdn.net/BROKEN__Y/article/details/126490340