1. 두 정수를 첫번째, 두번째에 쓴다.
2. 첫번째 수가 홀수 면, 두번째 수를 세번째 칸에 기록한다.
3. 첫번째 수를 2로 나누고 (나머지 버림), 두번째 수에 2를 곱한다. --> 쉬프트 연산자
4. 첫번째 수가 0보다 크면 2로 돌아간다 --> while 문
5. 세번째 칸의 수를 모두 더한다.
#include <iostream>
#include <vector>
using namespace std;
int main(){
int a=123;
int b=28;
vector<vector<int>> vc;
vector<int> temp;
while(a>0){
temp.push_back(a);
temp.push_back(b); // 1. 두 정수를 첫번째. 두번째에 쓴다.
if(a&1){ // 2. 첫번째 수가 홀수 이면 두번째수를 세번째 칸에 기록한다.
temp.push_back(b);
}else{
temp.push_back(0);
}
a=a>>1;
b=b<<1; // 쉬프트 연산
vc.push_back(temp);
temp.clear();
}
cout<<"vc 배열 출력"<<endl;
for(int i=0; i<vc.size(); i++){
for(int j=0; j<vc[i].size(); j++){
cout<<vc[i][j];
cout<<" ";
}
cout<<endl;
}
cout<<"3번째 벡터 모든합"<<endl;
int answer=0;
for(int i=0; i<vc.size(); i++){
answer+=vc[i][2];
}
cout<<"answer="<<answer<<endl;
cout<<"a*b="<<123*28<<endl;
system("pause");
return 0;
}
vc 배열 출력
123 28 28
61 56 56
30 112 0
15 224 224
7 448 448
3 896 896
1 1792 1792
3번째 벡터 모든합
answer=3444
a*b=3444
댓글