백준 2089번: -2진수
https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 문제 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 2^0, 2^1, 2^2, 2^3이 표현 되지만 -2진법에서는 (-2)^0 = 1, (-2)^1 = -2, (-2)^2 = 4, (-2)^3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 110..
2020.05.18
백준 1212번: 8진수 2진수
https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 문제 8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. 출력 첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다. 코드 #include #include using namespace std; int main(){ string s; cin>>s; int len=s.length(); if(s[0]-'0'==0) { cout
2020.05.18
백준 1373번: 2진수 8진수
https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net 문제 2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오. 입력 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 주어진 수를 8진수로 변환하여 출력한다. 코드 #include #include using namespace std; int main(){ string s; cin>>s; int len=s.length(); if(len%3==2) cout
2020.05.18
백준 2734번: 진법 변환
https://www.acmicpc.net/problem/2745 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다..
2020.05.18
백준 11005번: 진법 변환 2
https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 �� www.acmicpc.net 문제 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다...
2020.05.18
백준 9613번: GCD 합
https://www.acmicpc.net/problem/9613 9613번: GCD 합 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 �� www.acmicpc.net 문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다..
2020.05.18
백준 1850번: 최대공약수
https://www.acmicpc.net/problem/1850 1850번: 최대공약수 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A www.acmicpc.net 문제 모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A가 111이고, B가 111111인 경우에는 최대공약수가 111이다. 입력 첫째 줄에 두 자연수 A와 B를 이루는 1의 개수가 주어진다. 입력되는 수는 2^6..
2020.05.18
백준 1934번: 최소공배수
https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수..
2020.03.16

https://www.acmicpc.net/problem/2089

 

2089번: -2진수

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110

www.acmicpc.net

 

 

 

 

문제

 

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 2^0, 2^1, 2^2, 2^3이 표현 되지만 -2진법에서는 (-2)^0 = 1, (-2)^1 = -2, (-2)^2 = 4, (-2)^3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 등이다.

10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오.

 

 

 

입력

 

첫 줄에 10진법으로 표현된 수 N(-2,000,000,000≤N≤2,000,000,000)이 주어진다.

 

 

 

출력

 

-2진법 수를 출력한다.

 

 

 

코드

 

#include <iostream>
#include <vector>
using namespace std;


int main(){
	int dec; // 10진수
	cin>>dec;

	vector<char> bin;
	
	if(dec == 0)
		cout<<'0';
	else {
		while(dec != 0) {
			if(dec % -2 == 0) {
				bin.push_back('0');
				dec = dec / -2;
			}
			else {
				bin.push_back('1');
				dec = (dec - 1) / -2;
			}
		}

		for(int i = bin.size() - 1; i >= 0; i--)
			cout<<bin[i];
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1978번: 소수 찾기  (0) 2020.05.18
백준 11576번: Base Conversion  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18

https://www.acmicpc.net/problem/1212

 

1212번: 8진수 2진수

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

www.acmicpc.net

 

 

 

 

문제

 

8진수가 주어졌을 때, 2진수로 변환하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다.

 

 

 

출력

 

첫째 줄에 주어진 수를 2진수로 변환하여 출력한다. 수가 0인 경우를 제외하고는 반드시 1로 시작해야 한다.

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s;
	cin>>s;

	int len=s.length();
	if(s[0]-'0'==0) {
		cout<<'0'; 
		return 0;
	}

	for(int i=0; i<len; i++){
		int bin[3]={ 0, }; // 이진수를 저장할 배열
		int j=2; // 이진수 배열의 인덱스 

		int n=s[i]-'0';
		
		while(n>0) {
			bin[j]=n%2;
			n/=2;
			j--;
		}

		if(i==0) {
			for(int k=j+1; k<3; k++)
				cout<<bin[k];
		} else
			cout<<bin[0]<<bin[1]<<bin[2];
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 11576번: Base Conversion  (0) 2020.05.18
백준 2089번: -2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18

https://www.acmicpc.net/problem/1373

 

1373번: 2진수 8진수

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

www.acmicpc.net

 

 

 

 

문제

 

2진수가 주어졌을 때, 8진수로 변환하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다.

 

 

 

출력

 

첫째 줄에 주어진 수를 8진수로 변환하여 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s;
	cin>>s;

	int len=s.length();

	if(len%3==2) cout<<(s[0]-'0')*2+(s[1]-'0');
	if(len%3==1) cout<<s[0]-'0';
	for(int i=len%3; i<len; i+=3)
		cout<<(s[i]-'0')*4+(s[i+1]-'0')*2+(s[i+2]-'0');
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 2089번: -2진수  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18

https://www.acmicpc.net/problem/2745

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

 

 

 

문제

 

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

 

 

입력

 

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

 

 

 

출력

 

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	string s; // B진법 숫자
	int n=0/*10진법으로 변환한 숫자*/, b;
	cin>>s>>b;

	int m=1;
	for(int i=s.length()-1; i>=0; i--) {
		if(s[i]-'A'>=0 && s[i]-'A'<=26)
			n+=(s[i]-'A'+10)*m;
		else
			n+=(s[i]-'0')*m;
		
		m*=b;
	}

	cout<<n;
}

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 ��

www.acmicpc.net

 

 

 

 

문제

 

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

 

 

 

입력

 

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

 

 

 

출력

 

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <string>
using namespace std;


int main(){
	char num[36]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};

	string s=""; // 번환한 숫자 저장

	int n, b;
	cin>>n>>b;

	while(n>=b) {
		s+=num[n%b];
		n/=b;
	}

	s+=num[n];

	for(int i=s.length()-1; i>=0; i--) cout<<s[i];
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16

https://www.acmicpc.net/problem/9613

 

9613번: GCD 합

문제 양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 ��

www.acmicpc.net

 

 

 

 

문제

 

양의 정수 n개가 주어졌을 때, 가능한 모든 쌍의 GCD의 합을 구하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 테스트 케이스의 개수 t (1 ≤ t ≤ 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있다. 각 테스트 케이스는 수의 개수 n (1 < n ≤ 100)가 주어지고, 다음에는 n개의 수가 주어진다. 입력으로 주어지는 수는 1,000,000을 넘지 않는다.

 

 

 

출력

 

각 테스트 케이스마다 가능한 모든 쌍의 GCD의 합을 출력한다.

 

 

 

 

코드

 

#include <iostream>
#include <vector>

using namespace std;

int gcd(int x, int y){	
	int temp, r;
	
	if(y>x) {
		temp=x;
		x=y;
		y=temp;
	}

	while(1) {
		r=x%y;

		if(r==0)
			return y;
		else {
			temp=y;
			y=x%y;
			x=temp;
		}
	}
}

int main(){
	int t;

	cin>>t;
	for(int i=0; i<t; i++) {
		int n;
		cin>>n;

		vector<int> vec(n);
		for(int j=0; j<n; j++) cin>>vec[j];

		long long sum=0;
		for(int k=0; k<n-1; k++)
			for(int l=k+1; l<n; l++)
				sum+=gcd(vec[k], vec[l]);

		cout<<sum<<endl;
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 2734번: 진법 변환  (0) 2020.05.18
백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16
백준 2609번: 최대공약수와 최소공배수  (0) 2020.03.16

https://www.acmicpc.net/problem/1850

 

1850번: 최대공약수

모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오. 예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A

www.acmicpc.net

 

 

 

 

문제

 

모든 자리가 1로만 이루어져있는 두 자연수 A와 B가 주어진다. 이때, A와 B의 최대 공약수를 구하는 프로그램을 작성하시오.

예를 들어, A가 111이고, B가 1111인 경우에 A와 B의 최대공약수는 1이고, A가 111이고, B가 111111인 경우에는 최대공약수가 111이다.

 

 

 

입력

 

첫째 줄에 두 자연수 A와 B를 이루는 1의 개수가 주어진다. 입력되는 수는 2^63보다 작은 자연수이다.

 

 

 

출력

 

첫째 줄에 A와 B의 최대공약수를 출력한다. 정답은 천만 자리를 넘지 않는다.

 

 

 

코드

 

#include <iostream>

using namespace std;

int gcd(long long& x, long long& y){
	long long temp, r;

	if(y>x) {
		temp=x;
		x=y;
		y=temp;
	}

	while(1) {
		r=x%y;

		if(r==0)
			return y;
		else {
			temp=y;
			y=x%y;
			x=temp;
		}
	}
}

int main(){
	long long a, b;
	cin>>a>>b;

	long long result=gcd(a, b);

	for(int i=0; i<result; i++)
		cout<<'1';
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 11005번: 진법 변환 2  (0) 2020.05.18
백준 9613번: GCD 합  (0) 2020.05.18
백준 1934번: 최소공배수  (0) 2020.03.16
백준 2609번: 최대공약수와 최소공배수  (0) 2020.03.16
백준 10430번: 나머지  (0) 2020.03.16

https://www.acmicpc.net/problem/1934

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다. 두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

 

 

 

 

문제

 

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.

두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.

 

 

 

입력

 

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)

 

 

 

출력

 

첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.

 

 

 

 

코드

 

#include <iostream>

using namespace std;

int gcd(int& x, int& y){
	int temp, r;

	if(y>x) {
		temp=x;
		x=y;
		y=temp;
	}

	while(1) {
		r=x%y;

		if(r==0)
			return y;
		else {
			temp=y;
			y=x%y;
			x=temp;
		}
	}
}

int main(){
	int a[1000], b[1000], lcm;

	int t;
	cin>>t;

	for(int i=0; i<t; i++) cin>>a[i]>>b[i];
	for(int i=0; i<t; i++) {
		lcm=a[i]*b[i]/gcd(a[i], b[i]);
		cout<<lcm<<endl;
	}
}

 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 9613번: GCD 합  (0) 2020.05.18
백준 1850번: 최대공약수  (0) 2020.05.18
백준 2609번: 최대공약수와 최소공배수  (0) 2020.03.16
백준 10430번: 나머지  (0) 2020.03.16
백준 1168번: 요세푸스 문제 2  (0) 2020.03.16