C++ for循环中变量值的更改不会在原始变量中更新 #包括 使用名称空间std; #定义ll long long int int main() { ll n,k; 整数计数=0; cin>>n>>k; 对于(int i=0;i

C++ for循环中变量值的更改不会在原始变量中更新 #包括 使用名称空间std; #定义ll long long int int main() { ll n,k; 整数计数=0; cin>>n>>k; 对于(int i=0;i,c++,loops,for-loop,variables,C++,Loops,For Loop,Variables,您正在递减N的值,但将其指定为旧值。替换: n=n--; 与: n--; 当您使用n--减少n时,您可以通过 #include<bits/stdc++.h> using namespace std; #define ll long long int int main() { ll n,k; int count=0; cin>>n>>k; for(int i=0;i<k;i++) { if(n%10!=0){

您正在递减N的值,但将其指定为旧值。替换:

n=n--;
与:

n--;

当您使用
n--
减少
n
时,您可以通过

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
   ll n,k;
   int count=0;
   cin>>n>>k;
   for(int i=0;i<k;i++)
   {
       if(n%10!=0){
           n=n--;
       }
       else {
           n=n/10;
       }
   }
   cout<<n<<endl;
}
只要
n--;
就足够了(清除代码):

#包括
int main()
{
长n,k;
标准:cin>>n>>k;
for(int i=0;istd::我不确定什么是好的副本。这是相关的:。你想要
n--
而不是
n=n--
n=n--
是未定义的行为。旁白:竞争性编程会强化坏习惯,一旦你做了任何真正的编程,你就需要忘记这些坏习惯。永远不要使用
包含
使用命名空间std;
 #定义ll long long int
。始终使用减量或赋值-不要尝试两者都使用。在
n--
--n
n-=1
n=n-1
之间进行选择(并阅读它们的含义)这是一个糟糕的想法
#定义ll long int
,尤其是当您可以轻松地用适当的
typedef
或使用directive@UjjwalBhardwaj如果它有效,请将其中一个答案标记为正确,以便其他搜索该答案的用户知道它的有效性。@Slava抱歉,我已重写它以删除其他错误做法。“您正在递减N的值,但将其指定为旧值。”这不是很正确的说法
n = n--;
#include <iostream>

int main()
{
    long long n,k;
    std::cin >> n >> k;
    for(int i = 0; i < k; i++)
    {
        if (n % 10 != 0) { n--; }
        else { n /= 10; }
    }
    std::cout << n << '\n';
}