标题:C++ 排队
只看楼主
Jason_
Rank: 2
来 自:浙江台州
等 级:论坛游民
帖 子:88
专家分:66
注 册:2019-7-14
结帖率:66.67%
已结贴  问题点数:20 回复次数:3 
C++ 排队
小h和小n在给小朋友们排队,有n(1<n≤100)个小朋友,序号为1到n,每个小朋友自身带着一个号码,他们排成一列,但号码不一定是有序的,现在小n问小h,如果从队列中随机抽取m(1≤m<n)个小朋友出列,求剩下小朋友中相邻两个小朋友号码乘积的总和。
输入
第一行一个整数n。
第二行n个整数ai(1≤ai≤100),分别表示第1到n个小朋友的号码。
第三行一个整数m。
第四行m个整数,表示出列的小朋友的序号(原本的序号,也就是说之前的出列对每个小朋友的序号没有影响)。
输出
一行一个整数表示相邻两个小朋友号码乘积的总和。
样例
输入  复制
10
14 87 28 29 49 27 84 10 65 43
7
1 3 5 7 8 9 10
输出  复制
3306
搜索更多相关主题的帖子: 整数 C++ 号码 序号 表示 
2020-03-22 12:16
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
得分:5 
那就剩下2 4 6三个数,2与4乘积加4与6乘积。输入数组后把抽出的序号的数赋值0,计算判断非0就取出计算。
2020-03-22 13:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:14 
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
using namespace std;

int main( void )
{
    // 输入
    size_t n;
    unsigned a[100];
    cin >> n;
    copy_n( istream_iterator<unsigned>(cin), n, a );
    size_t m;
    cin >> m;
    for( size_t i=0; i!=m; ++i )
    {
        size_t index;
        cin >> index;
        a[index-1] = 0;
    }

    // 开始干活
    unsigned sum = 0;
    unsigned cur = 0;
    for( size_t i=0; i!=n; ++i )
    {
        if( a[i] != 0 )
        {
            sum += cur*a[i];
            cur = a[i];
        }
    }

    // 输出
    cout << sum << endl;
}
2020-03-22 14:41
maomao12345
Rank: 2
来 自:五位神奇空间
等 级:禁止访问
威 望:2
帖 子:127
专家分:64
注 册:2020-3-23
得分:1 
嗯……有点晕

一个快乐的小小孩
2020-03-24 17:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500504-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.437378 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved