Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- LIS #가장긴증가하는부분수열 #
- 투포인터 #백준 #boj #20922 #22862
- 3343
- 20117
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- graph
- 16202
- 줄어드는수
- 코딩
- 1174
- 이분탐색 #dp #11053
- graph #최단경로
- 30870
- BOJ
- N번째큰수
- boj #백준
- hcpc
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- 레드아보
- 백준
- 백준 #다익스트라 #dijkstra #9370 #c++
- 호반우 상인
- C++
- 쌤쌤쌤
- 22869
- 사이클 없는 그래프
- c++ #boj #
- backtracking #codetree #디버깅 #삼성코테
Archives
- Today
- Total
hyunjin
[C++][BOJ-11005/2745/1373]진법 변환, stoi , cout << oct, &연산 , -2 진법 본문
728x90
10진 -> n 진법
소스코드
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,b;
string ans;
cin>> n>>b;
while(n>0){
char c = (n%b)<10 ? char(n%b + '0') : char('A'-10 + n%b);
ans = c + ans;
n/=b;
}
cout<<ans;
return 0;
}
n -> 10진 stoi(s,0,n)
소스코드
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
int n;
cin >>s >>n;
cout<<stoi(s,0,n);
return 0;
}
string s가 n진법으로 표현되었다 라는 것을 알려주고 int로 변환.
2진 -> 8진
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
string n,ans;
cin>>n;
int len = n.size();
if( len %3 == 1)
cout<<n[0];
else if(len%3==2) cout <<( n[0] -'0')*2 + (n[1] -'0') ;
for(int i = len%3 ; i < len ; i+=3 )
cout << ( n[i]-'0') * 4 + (n[i+1]-'0')*2 + (n[i+2] -'0');
return 0;
}
런타임 에러나지만 쉽게..
#include<bits/stdc++.h>
using namespace std;
int main(){
string n;
cin >> n;
cout << oct << stoll(n,0,2);
return 0;
}
cout 출력을 8진수로 하도록 바꿨다...
8진 -> 2진
소스코드1
#include <bits/stdc++.h>
using namespace std;
int main(){
string n;
cin >> n;
for(int i = 0,tmp ; i < n.size();i++){
string ans;
tmp = n[i] - '0';
if(tmp-4>=0){
ans += '1';
tmp -=4;
}
else ans += '0';
if(tmp-2>=0){
ans += '1';
tmp -=2;
}
else ans += '0';
if(tmp-1>=0){
ans += '1';
tmp -=1;
}
else ans += '0';
(i==0) ? cout<<stoi(ans) : cout<<ans;
//cout << ((i==0) ? stoi(ans) : ans );
}
return 0;
}
마지막에 cout 조심
소스코드2 - 숏코딩 &연산
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
bool flag=false;
while( (n= getchar()) >='0' ){
n = (n&4)*25 + (n&2)*5 + (n&1);
//(flag) ? printf("%03d",n): printf("%d",n); // 이것도 가능
printf( (flag)? "%03d" : "%d", n );
flag =true;
}
return 0;
}
& 연산자를 사용했다.
cout<< (4&4) << endl; // 결과 : 4
cout<< (3&4) << endl; // 결과 : 0
cout<< (8&4) << endl; // 결과 : 0
cout<< (20&4) << endl; // 결과 : 0
같은 자리에 1 있는 것만 0 아닌 결과 나옴.
이것을 이용해 문제를 푼다.
-2 진법
소스 코드
n -> m 진법
소스 코드
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b,m,tmp;
string ans;
long long dec=0;
cin >> a >> b >>m;
while(m--){
cin>>tmp;
dec = dec+(int)pow(a,m)*tmp ;
}
while(dec){
ans = to_string(dec%b)+' ' +ans;
dec/=b;
}
cout<<ans;
return 0;
}
728x90
'알고리즘 연습 > 백준' 카테고리의 다른 글
[C++][BOJ/DFS와 BFS/1260] fill, memset (0) | 2021.02.18 |
---|---|
[C++][BOJ-소수 관련1978,] 소수찾기, 소인수분해 (0) | 2021.02.17 |
[C++][BOJ-2609]최대공약수,최소공배수 관련 문제들 __gcd (0) | 2021.02.16 |
[C++][BOJ 나머지(10430)] 유클리드 호제법 (0) | 2021.02.16 |
[C++][BOJ- 10808/10820/1165/1166] islower, isupper,isdigit,isalpha , <string ,int,char>간 변환 (0) | 2021.02.16 |