# Bit Manipulation# String# Number Conversion

e799 - p6. 資工系的浪漫

🔗 前往 ZeroJudge 原題

題目描述

題目要求將輸入的 N 個整數 Si,轉換為二進位表示,並用指定的字元 C 代表 1,用 '.' 代表 0,輸出一個 N x M 的圖形。

解題思路

對於每個輸入的整數 Si,我們需要將其轉換為二進位字符串。轉換的過程中,如果當前位是 1,則在字符串中添加字元 C;如果當前位是 0,則添加 '.'。由於需要輸出 M 位二進位,因此需要確保二進位字符串的長度為 M。最後,將生成的字符串反轉後輸出,並在每個字元之間添加空格。

複雜度分析

  • 時間複雜度: O(N * M)
  • 空間複雜度: O(M)

程式碼

#include <iostream>
#include <string>
using namespace std;
int main(){
	int n,m;
	cin >> n >> m;
	char c;
	cin >> c;
	long long int a;
	while(n--){
		cin >> a;
		int mm=m;
		string t;
		while(mm--){
			if(a%2==0)
				t+='.';
			else
				t+=c;
			a/=2;
		}
		for(int i=m-1;i>=0;i--){
			cout << t[i] << " ";
		}
		cout << "\n";
	}
}

Discussion