# String Manipulation# Simple Arithmetic# Iteration

a065 - 提款卡密碼

🔗 前往 ZeroJudge 原題

題目描述

題目要求根據給定的七個大寫字母,計算相鄰字母之間的「距離」,並將這些距離組成密碼輸出。字母的「距離」定義為從較小的字母到較大的字母需要數的字母數量。

解題思路

題目給定一個包含七個大寫字母的字串。程式需要遍歷字串,計算相鄰字母之間的距離,並將這些距離輸出。計算距離時,需要考慮字母的 ASCII 碼,並計算差值。由於題目中字母是相鄰的,因此可以直接使用 abs() 函數計算差值。

複雜度分析

  • 時間複雜度: O(n),其中 n 是字串的長度 (在本例中為 7)。程式需要遍歷字串一次來計算相鄰字母的距離。
  • 空間複雜度: O(1)。程式只使用了幾個變數來儲存字母和距離,空間使用量不隨輸入大小變化。

程式碼

#include <iostream>
#include <cmath>

using namespace std;

int main (){
	
	char a[7];
	while(cin >> a){
		for(unsigned short i=0;i<=5;i++){
			cout << abs(a[i+1]-a[i]);
		}
		cout << endl;
	}
	return 0;
	
}

Discussion