免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3605 | 回复: 15
打印 上一主题 下一主题

[C++] 初中奥赛试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-20 21:22 |只看该作者 |倒序浏览
本帖最后由 hniu 于 2013-07-20 21:46 编辑

    小侄女读初中,问我一道奥赛试题:
    从键盘输入30个数,每5个求和,结果保存在一个数组中,输出。

    斗胆写了一段代码:

  1. #include <algorithm>
  2. #include <numeric>
  3. #include <iostream>
  4. #include <array>

  5. int main()
  6. {
  7.    using namespace std;
  8.    array<int, 30> myarray;
  9.    array<int, 6> myret;

  10.    for(auto& i : myarray)
  11.       cin >> i;

  12.    for_each(myret.begin(), myret.end(), [&myarray](int& s){
  13.            static int i=0;
  14.            auto itr=myarray.begin();
  15.            s=accumulate(itr+i, itr+i+5, 0);
  16.            i+=5;
  17.            });
  18.    
  19.    for(auto& i : myret)
  20.       cout << i << " ";
  21.    cout << endl;
  22.    return 0;
  23. }




  24.    
复制代码

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
2 [报告]
发表于 2013-07-20 22:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2013-07-21 05:09 |只看该作者
  1. std::copy( std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), myarray.begin() );
复制代码
数据输入这样写更优雅些:)

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2013-07-21 05:23 |只看该作者
同样数据输出:
  1. std::copy( array.begin(), array.end(), std::ostream_iterator<int>(std::cout, " ") );
复制代码

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
5 [报告]
发表于 2013-07-21 08:42 |只看该作者
奥赛基本上是扯犊子。

论坛徽章:
0
6 [报告]
发表于 2013-07-21 14:34 |只看该作者
本帖最后由 hniu 于 2013-07-21 14:35 编辑
pmerofc 发表于 2013-07-20 22:06
初中学C++?
不会吧


从2011年开始,奥赛允许C++使用STL。这样参赛选手就可以直接使用线性链表等数据结构,以及快速排序等算法,不用自己重新实现了。大大加快了做题速度。所以,越来越多的选手,开始放弃pascal,转向C++了。



lost_templar 发表于 2013-07-21 05:09
数据输入这样写更优雅些:)


谢谢提示。



fender0107401 发表于 2013-07-21 08:42
奥赛基本上是扯犊子。


确实,深有同感。都是家长在揠苗助长啊。“扯犊子”很贴切啊。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
7 [报告]
发表于 2013-07-21 17:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
8 [报告]
发表于 2013-07-23 09:53 |只看该作者

在我看来,这样写更优雅些:
  1. #!perl6
  2. say lines.match(/[\d+\s*]**5/,:g).map:{[+] .split(/\s+/)}
复制代码

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
9 [报告]
发表于 2013-07-23 13:36 |只看该作者
在我看来,汉语越来越白话文,C++越来越文言文……
追求言简意赅的“优雅”,已经让我有点难以理解其语义了……
是否假以时日,有人可以用C++写诗做赋了?

论坛徽章:
0
10 [报告]
发表于 2013-07-23 13:36 |只看该作者
pitonas 发表于 2013-07-23 09:53
在我看来,这样写更优雅些:


脚本语言一招毙命啊!赞。

但是奥赛的试题,是要经过大样本数据benchmark的。
有一个巨大的数据输入文件,程序要在规定的时间内运行完成,且有内存限制。

脚本语言是不行的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP