来源: 北京大学在线程序评测系统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 ∑ 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 }
原文:http://www.cnblogs.com/dagon/p/4808913.html