POJ C++程序设计 编程题#5 计算数组的低3位之和

编程题#5:计算数组的低3位之和

来源: 北京大学在线程序评测系统POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

总时间限制: 1000ms 内存限制: 1024kB

描述

输入一个正整数构成的数组a[0], a[1], a[2], ... , a[n-1], 计算它们的二进制低3位之和。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 在此处补充你的代码
int main(int argc, char* argv[]) {
        int v, my_sum=0;
        vector<int> vec;
        cin>>v;
        while ( v ) {
                vec.push_back(v);
                cin>>v;
        }
        for_each(vec.begin(), vec.end(), CMy_add(my_sum));
        cout<<my_sum<<endl;
        return 0;
}

 

输入

数组a,以0表示输入结束。

 

输出

一个整数 , 所输入数组各元素的二进制低3位之和。

 

样例输入

1 3 9 7 3 6 20 15 18 17 4 8 18 0

 

样例输出

41

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 using namespace std;
 5 // 在此处补充你的代码
 6 class CMy_add {
 7 private:
 8     int &sum;
 9 public:
10     CMy_add(int &n):sum(n) {}
11     void operator()(int x) {
12         while (x >= 8) {
13             x -= 8;
14         }
15         sum += x;
16     }
17 };
18 int main(int argc, char* argv[]) {
19     int v, my_sum=0;
20     vector<int> vec;
21     cin>>v;
22     while ( v ) {
23         vec.push_back(v);
24         cin>>v;
25     }
26     for_each(vec.begin(), vec.end(), CMy_add(my_sum));
27     cout<<my_sum<<endl;
28     return 0;
29 }
原文地址:https://www.cnblogs.com/dagon/p/4808913.html