51 条题解

  • 0
    @ 2022-12-26 20:34:10

    //考过一级的兄弟们在刷训练题的时候就会看到这道题官方不要出重复啊!!!!!!! #include <iostream> using namespace std; int main() { int n; cin>>n; while(n!=1) { if (n%2==1) { cout<<n<<""<<"3"<<"+"<<1<<"="<<n3+1<<endl; n=n*3+1; } else { cout<<n<<"/"<<2<<"="<<n/2<<endl; n=n/2; } } cout<<"End"; } //再见不送ヾ(•ω•`)o

  • 0
    @ 2022-12-19 21:27:12

    最基础的判断,如果是奇数,就乘三加一,如果是偶数,就除二。 我是定义了一个函数来计算,虽然本题不用这么麻烦,但用函数可以适应多种题型,

    1、首先定义函数fun,使用一个变量a

    2、在函数框架下面写上int main()

    3、写上主代码,定义一个变量n,输入n,然后用n来作为函数的参数:fun(n)

    4、编写函数fun:最开始判断一次,参数a是否等于1,如果等于,直接输出“END”结束代码,否则二次判断,是奇数还是偶数,是奇数就输出a*3+1,输出算式,是偶数就输出a/2,输出算式。

    #include<iostream>
    #include<stdio.h>
    using namespace std;
    void fun(int a)
    {
        if (a == 1) {
            cout << "End";
        }
        else if (a % 2 == 1) {
            int x = a * 3 + 1;
            printf("%d*3+1=%d\n", a, x);
            fun(x);
        }
        else {
            int x = a / 2;
            printf("%d/2=%d\n", a, x);
            fun(x);
        }
    }
    int main()
    {
        int n;
        cin >> n;
        fun(n);
        return 0;
    }
    

    +1 +1 +1 +1 +1 +1 +1

    • 0
      @ 2022-12-14 17:55:28
      #include <iostream>
      using namespace std;
      int main()
      {
          int a;
          cin >> a;
          while (a != 1)
          {
              if(a % 2 == 0)
              {
                  cout << a << "/2=";
                  a = a / 2;
                  cout << a << endl;
              }
              else if(a % 2 == 1)
              {
                  cout << a << "*3+1=";
                  a = a * 3 + 1;
                  cout << a << endl;
              }
          }
          cout << "End";
          return 0;
      }
      
      • 0
        @ 2022-10-19 21:56:19
        • 0
          @ 2022-9-3 20:00:41

          简单的while循环。每次判断n的奇偶性并相应处理。

          核心代码:

          while(n>1){
              if (n&1){//是奇数
                  printf("%d*3+1=%d\n",n,n*3+1);
                  n=n*3+1;
              }else{
                  printf("%d/2=%d",n,n/2);
                  n/=2;
              }
          }
          printf("End");
          
          • 0
            @ 2022-9-3 10:43:44
            while (n>1)
            {
                if (n%2==1)
                {
                    printf("%d*3+1=%d\n",n,n*3+1);
                    n=n*3+1;
                }
                else
                {
                    printf("%d/2=%d\n",n,n/2);
                    n/=2;
                }
            }
            cout<<"End";
            
            • 0
              @ 2022-8-30 14:11:32

              #include<iostream>

              #include<cstdio>

              using namespace std;

              int main(){

              int x;
              
              scanf("%d",&x);
              
              while(x!=1){
              
              	if(x%2==1){
              
              		printf("%d*3+1",x);
              
              		x*=3;
              
              		x++;
              
              		printf("=%d",x);
              
              	}
              
              	else{
              
              		printf("%d/2",x);
              
              		x/=2;
              
              		printf("=%d",x);
              
              	}
              
              	printf("\n");
              
              }
              
              printf("End");
              
              return 0;
              

              }

              • 0
                @ 2022-8-27 15:42:38

                感觉有点难(后来发现其实很简单(Doge)

                定义一个整数,这里建议大家有long int类型来定义(看题目给的范围)

                然后用while循环(因为题目是说在得数是1的时候输出“End”然后结束,所以我们while循环的条件可以写成n>1)

                接着,while循环里面再写个if语句

                注意:判断分辨出奇偶数后要直接在while循环里输出,然后需要将这个数进行运算(*3+1或/2)),最后在while循环外输出“End”即可

                (已AC)

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

                划重点:当你只知道循环的终止条件时, 用while循环来做会简单些(除非你知道 更好的方法,但我不知道(bushi)

                UP码字不易,求点赞(给友友们跪下了)

                (写得好详细啊……)

                • 0
                  @ 2022-8-11 13:06:58

                  这道题主要是用while来完成。也可以定义一个运算的函数,让代码更简洁。别忘了开long long

                  while (a != 1)//循环到1为止
                  {
                      if (a % 2 == 0)//不是偶数就是奇数
                      {
                          cout << a << "/2=" << a / 2;//输出
                          cout << endl;
                          a = a / 2;
                      }
                      else
                      {
                          cout << a << "*3+1=" << a * 3 + 1;//输出
                          cout << endl;
                          a = a * 3 + 1;
                      }
                  }
                  
                  • -5
                    @ 2023-2-6 15:23:55

                    写题解请注意

                    鼓励大家写题解,但注意题解格式。

                    题解一定要有思路解析或代码注释,能否让别人理解你的思路

                    也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。

                    给代码两端加上这个会舒服一些

                    ```cpp

                    你的代码

                    ```

                    </span>

                    这个点在键盘的左上角tab上面那个键,注意切换输入法

                    #include<iostream>
                    using namespace std;
                    int main()
                    {
                        int n;
                        cin>>n;//这是一个注释
                        return 0;
                    }
                    

                    请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

                    抄袭题解一经发现直接取消成绩。

                    题解被删除的可能

                    1. 代码不符合格式规范
                    2. 没有思路讲解或者没有注释,
                    3. 无意义的题解

                    大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。

                    • -5
                      @ 2022-4-28 19:57:36

                      本题是while循环的入门应用题, while循环一般应用在,不确定循环次数的时候,

                      对于for循环的题目,题目一般都是求1到n之间等等,我们可以清楚的知道循环次数,但是对于该题这样的题目, 我们无法得知一个数字n会变化多少次,因此应用 while循环,while循环括号内写的就是

                      可以循环的条件,请理解该句话。

                      对于本题,一个数字n最终肯定会变成1,因此循环的条件 就是n!1n!=1.

                      然后根据题目的要求模拟n的变化即可。 注意输出格式要符合题目要求。详情看代码

                      	while(n!=1)
                      	{
                      		cout<<n;//每次在n变化前先输入m 
                      		if(n%2==1)
                      		{
                      			n=n*3+1;
                      			cout<<"*3+1="<<n<<endl;//输入变化后的式子 
                      		}
                      		else
                      		{
                      			n=n/2;
                      			cout<<"/2="<<n<<endl;//输入变化后的式子 
                      		}
                      	}
                      	cout<<"End";//最后要输出这个 
                      

                      信息

                      ID
                      1511
                      时间
                      1000ms
                      内存
                      256MiB
                      难度
                      4
                      标签
                      递交数
                      2426
                      已通过
                      1140
                      上传者