# Iteration# Conditional Statements# Number Theory

e621 - 1. 免費停車 (Free Parking)

🔗 前往 ZeroJudge 原題

題目描述

題目要求找出指定區間內,不為指定數字倍數的數字。具體來說,輸入包含多組測試案例,每組案例包含三個整數 bcd。輸出區間 (b, c) 內所有不為 d 的倍數的數字,如果沒有符合條件的數字,則輸出 "No free parking spaces."。

解題思路

這題的解題思路很直接。對於每組測試案例,我們需要遍歷從 b + 1c - 1 的所有整數。對於每個整數 i,我們檢查它是否為 d 的倍數。如果不是,則將其輸出。如果遍歷完整個區間後沒有找到任何符合條件的數字,則輸出 "No free parking spaces."。

複雜度分析

  • 時間複雜度: O(n),其中 n 是區間 (b, c) 的大小,即 c - b - 1
  • 空間複雜度: O(1),因為我們只使用了常數級別的額外空間。

程式碼

#include <iostream>
using namespace std;
int main(){
	int a,b,c,d;
	cin >> a;
	while(a--){
		cin >> b >> c >> d;
		bool e=0;
		for(int i=b+1;i<c;i++){
			if(i%d!=0){
				cout << i << " ";
				e=1;
			}
		}
		if(e==0)
			cout << "No free parking spaces.\n";
		else
			cout << "\n";	
	}
}

Discussion