# Math# Number Theory

e519 - 10633 - Rare Easy Problem

🔗 前往 ZeroJudge 原題

題目描述

題目給定一個數字 N-M,其中 N 是至少兩位數的整數,M 是通過移除 N 的最後一位數字得到的整數。目標是找出所有可能的 N 值。

解題思路

N 的最後一位數字為 d,則 N = 10 * M + d。題目給定的值是 N - M,因此 N - M = (10 * M + d) - M = 9 * M + d。 已知 N - M 的值,我們需要找到 Md 的值。 由於 d 是一個 0 到 9 之間的數字,我們可以通過遍歷所有可能的 d 值來找到對應的 M 值。 如果 M 是整數,並且 N = 10 * M + d 至少是兩位數,那麼 N 就是一個可能的解。 題目中特別提到如果 a%9==0,則輸出 b-1b,否則輸出 b。這是因為當 N-M 是 9 的倍數時,存在兩種可能的 N 值。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	long long int a;
	while(cin >> a){
		if(a==0)break;
		long long int b=a*10/9;
		if(a%9==0)
			cout << b-1 << " " << b << "\n";
		else
			cout << b << "\n";
	}
}

Discussion