啊?

B2077 角谷猜想

comcnSBhhh @ 2024-01-28 10:39:37

为什么错了,求助QAQ

#include<bits/stdc++.h>
using namespace  std;
int main()
{
  long long n;
  cin>>n;
  while(n!=1)
  {
      if(n==1) cout<<"End";
      else
      {
          if(n%2==0)
          {
              cout<<n<<"/2="<<n/2<<endl;
              n/=2;
          }
          else if(n%2!=0)
          {
              cout<<n<<"*3+1="<<n*3+1<<endl;
              n=n*3+1;
          }
      }
  }
  return 0;
}

大佬救我


by rainbow_cat @ 2024-01-28 10:43:23

你阳历都没过


by comcnSBhhh @ 2024-01-28 10:43:46

全WA了......


by Dream_Creator @ 2024-01-28 10:44:51

@comcnSBhhh

首先把 if(n==1) cout<<"End"; 放到循环内的最后面去,保证操作完后如果 n 为 1 则直接输出。不改则不会输出。

其次,n==1 时程序没有输出,须在循环外面加一句 if(n==1) cout<<"End";

#include<bits/stdc++.h>
using namespace  std;
int main()
{
  long long n;
  cin>>n;
  if(n==1) cout<<"End";
  while(n!=1)
  {

          if(n%2==0)
          {
              cout<<n<<"/2="<<n/2<<endl;
              n/=2;
          }
          else if(n%2!=0)
          {
              cout<<n<<"*3+1="<<n*3+1<<endl;
              n=n*3+1;
          }
     if(n==1) cout<<"End";
  }
  return 0;
}

by rainbow_cat @ 2024-01-28 10:46:18

这样就对了

#include<bits/stdc++.h>
using namespace  std;
int main()
{
    long long n;
    cin>>n;
    while(n!=1)
    {
        if(n%2==0)
        {
            cout<<n<<"/2="<<n/2<<endl;
            n/=2;
        }
        else if(n%2!=0)
        {
            cout<<n<<"*3+1="<<n*3+1<<endl;
            n=n*3+1;
        }
    }
    cout<<"End";
    return 0;
}

by __PRO__ @ 2024-01-28 10:47:37

@comcnSBhhh 您好,您的代码有以下几个问题:

  1. while(n!=1) 表示的是如果 n!=1,那么就继续执行里面的代码。然而在 while 里面,您的 if 却判断了 n==1,这是毫无意义的,也就是说 cout<<"End"; 永远不会执行。

by comcnSBhhh @ 2024-01-28 11:13:03

统一回复:O(∩_∩)O谢谢各位!


|