Codeforces 977A Wrong Subtraction 錯誤的減法 翻譯與解答

難易度 : 800

英文原文如下

Little girl Tanya is learning how to decrease a number by one, but she does it wrong with a number consisting of two or more digits. Tanya subtracts one from a number by the following algorithm:

  • if the last digit of the number is non-zero, she decreases the number by one;
  • if the last digit of the number is zero, she divides the number by 10 (i.e. removes the last digit).

You are given an integer number n. Tanya will subtract one from it k times. Your task is to print the result after all k subtractions.

It is guaranteed that the result will be positive integer number.

中文翻譯

小女孩 Tanya 正在學習如何對數字減一,但她在對兩位以上的數字進行時出了點錯,她用了以下的算法對數字進行減一的動作 :

  • 要是最後一位數字非0,她會將數字減1
  • 要是最後一位數字為0,她會將數字除10 (去掉最後一位)

給予你一個整數數字 n。 Tanya 會對這個數字進行 k次的減法,你的任務就是要印出 k 次之後的結果。

答案保證是一個正整數。

輸入

The first line of the input contains two integer numbers n and k (2≤ n ≤109, 1≤ k ≤50) — the number from which Tanya will subtract and the number of subtractions correspondingly.

第一行輸入包含了兩個整數數字 n 以及 k

輸出

Print one integer number — the result of the decreasing n by one k times.

It is guaranteed that the result will be positive integer number.

印出一個整數 — n 經過 k 次減法後的結果。

答案保證是一個正整數。

範例

輸入512 4
輸出50
輸入1000000000 9
輸出1

筆記

The first example corresponds to the following sequence: 512→511→510→51→50

第一個範例的逐步結果會是這樣 : 512→511→510→51→50


解題思路

應該沒什麼困難的地方,跑個迴圈並按照給定的規則來計算答案就好

C#解決方案

方案1

string[]arr = Console.ReadLine().Split(' '); //split by space
int n = int.Parse(arr[0]);
int k = int.Parse(arr[1]);


for(int i=0;i<k;i++){
    if(n%10==0){
        n = n/10;
    }
    else {
        n = n-1;
    }
}
Console.WriteLine(n);

Java解決方案

方案1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] arr = scanner.nextLine().split(" ");
        
        int n = Integer.parseInt(arr[0]);    
        int k = Integer.parseInt(arr[1]);  
        
        
        for(int i=0;i<k;i++){
            if(n%10==0){
                n = n/10;
            }
            else {
                n = n-1;
            }
        }
        
        System.out.println(n);
    }
}

結論

哪個小女孩想得出這樣的減法啦…題目不只烙烙長還沒甚麼意義ㄟ!!

🧡如果文章有幫上你的忙,那是我的榮幸

🧡收藏文章或幫我點個廣告,那都是對我的支持

✅如有任何疑問,歡迎透過留言或messenger讓我知道 !

題目連結 : Problem – 977A – Codeforces

一些其他的Codeforces文章

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *