codeforces 977AWrong Subtraction

977A
Wrong Subtraction
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
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 nn. Tanya will subtract one from it kk times. Your task is to print the result after all kk subtractions.
It is guaranteed that the result will be positive integer number.
Input
The first line of the input contains two integer numbers nn and kk (2≤n≤1092≤n≤109, 1≤k≤501≤k≤50) — the number from which Tanya will subtract and the number of subtractions correspondingly.
Output
Print one integer number — the result of the decreasing nn by one kk times.
It is guaranteed that the result will be positive integer number.
Examples
input
Copy
512 4
output
Copy
50
input
Copy
1000000000 9
output
Copy
1
Note
The first example corresponds to the following sequence: 512→511→510→51→50512→511→510→51→50.
题目解释:
个位若为非零数字,则每次减1;个位数字为零,则除10.
错误程序:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,k;
  cin>>n>>k;
  int gewei=n%10;
  while(k--){
     while(gewei--&&k--)//这种的递减顺序不明确,最好不要使用
     {
       n--;
     }
     n/=10;
     gewei=n%10;
  }
  cout<<n<<endl;
  //system("pause");
    return 0;
}

错误原因:第一层循环是必须的,第二层循环明显增加了该程序的时间复杂度,若有一个特别大的数,那么该程序的时间复杂度将会大大提高。所以就会出现test1超时现象。
标准程序:

#include<bits/stdc++.h>
using namespace std;
int main()
{
  int n,k;
  cin>>n>>k;
  while(k--){
      if(n%10==0)  n/=10;
      else n--;
  }
  cout<<n<<endl;
  //system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值