13 条题解

  • 24
    @ 2022-8-20 19:22:37

    这一道题我用的是 string 类型来做的,先看看思路吧~

    1. 首先用 sum 为总积分,last 为上一天的积分数
    2. 先用 getline() 语句截取一整行的字符串到 a 中
    3. 然后 0 ~ 循环字符个数 - 1,别情写上三个判断语句
    4. 首先判断如果是 N 没签到就直接把今天的社为零(到明天就是昨天了)
    5. 然后判断特殊情况如果积分积累到了 5 并且还签到了,那还将 sum 加 5(最高上限)
    6. 最后判断如果前一天签到了并且前一天的积分大于等于 1,就将 last 加上一并且将总数 sum 加上 last
    7. 最后输出 sum(总数)即可~

    最后,我们的 AC 代码就出现啦!!!

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int last = 0, sum = 0;
        string a;
        getline(cin, a);
        for (int i = 0; i <= a.size() - 1; i++)
        {
            if (a[i] == 'N') last = 0;
            else if (last == 5 && a[i] == 'Y') sum += last;
            else if (last >= 1 && a[i] == 'Y' || last == 0 && a[i] == 'Y')
            {
                last += 1;
                sum += last;
            }
        }
        cout << sum;
        return 0;
    }
    
  • 5
    @ 2022-12-22 17:20:45

    "简洁"代码 (真不知道咋写)

    #include <iostream>
    using namespace std;
    int main()
    {
        string s;
        cin >> s;
        int total = 0, n = 0;
        for (std::size_t i = 0; i < s.size(); i++)
        {
            if (s[i] == 'Y')
            {
                if (n < 5) n++;
                total += n;
            }
            else n = 0;
        }
        cout << total;
        return 0;
    }
    
    • 5
      @ 2022-9-12 11:36:19

      这一道题我用的是 string 类型来做的,先看看思路吧~

      1. 首先用 a 为总积分,x 为积分数
      2. 先用 length() 语句截取一整行的字符串到 a 中
      3. 然后 0 ~ 循环字符个数 - 1,写上判断语句
      4. 首先判断如果是 N 没签到就直接把今天的设为1
      5. 然后判断特殊情况如果积分积累到了 5 并且还签到了,那还将 sum 加 5(最高上限),i 就不 ++
      6. 最后判断如果前一天签到了并且前一天的积分大于等于 1,就将总数 a 加上 x ,并且将 x 加上一
      7. 最后输出 a(总数)即可~
      #include <iostream>
      using namespace std;
      int x=1, a;
      string n;
      int main()
      {
          cin>>n;
          for (int i=0;i<n.length();i++)
          {
              if (n[i]=='Y')
              {
                  a+=x;
                  if (x<5) x++;
              }
              else x=1;
          }
          cout<<a;
          return 0;
      }
      
    • 4
      @ 2024-2-4 14:18:57

      这道题并不难~

      1. 定义一个string类型的变量s,再定义int类型变量num为1,sum(用来统计总积分)为0
      2. 循环:如果今天签到了,sum增加num(前一天得分加一)分,如果num没有达到上限5,再增加1
      3. 如果今天没有签到,num重新归一
      #include <iostream>
      using namespace std;
      int main()
      {
          string s;
          cin >> s;
          int num=1,sum=0;
          for (int i=0;i<s.length();i++)
          {
              if (s[i]=='Y')
              {
                  sum+=num;
                  if (num<5)
                  {
                      num++;
                  }
              }
              else
              {
                  num=1;
              }
          }
          cout << sum;
          return 0;
      }
      

      已AC

      • 3
        @ 2024-1-29 11:09:38
        #include <iostream>
        using namespace std;
        int x, y, sum;
        int main()
        {
            string n;
            cin >> n;
            for (int i = 0; i <= n.length() - 1; i++)
            {
                if (n[i] == 'Y')
                {
                    x += 1;
                    if (x > 5)
                    {
                        x -= 1;
                    }
                    sum += x;
                }
                else
                {
                    x = 0;
                }
            }
            cout << sum;
            return 0;
        }
        
        • 3
          @ 2024-1-16 19:40:39
          cout  << "??";
          
          
          • 3
            @ 2023-8-9 20:09:12
            #include <iostream>
            using namespace std;
            int x=1, a;
            string n;
            int main()
            {
                cin>>n;
                for (int i=0;i<n.length();i++)
                {
                    if (n[i]=='Y')
                    {
                        a+=x;
                        if (x<5) x++;
                    }
                    else x=1;
                }
                cout<<a;
                return 0;
            }
            
            • 2
              @ 2024-1-16 14:41:44
              #include<iostream>
              using namespace std;
              int main()
              {
                  string s;
                  cin>>s;
                  int x,sum=0;
                  for(int i=0;i<s.length();i++)
                  {
                      if(s[i]=='Y')
                      {
                          if(x<5)
                          {
                              x+=1;
                              sum+=x;
                          }
                          else
                          {
                              sum+=5;
                          }
                      }
                      else
                      {
                          x=0;
                      }
                  }
                  cout<<sum;
                  return 0;
              }
              
              
              
              • 1
                @ 2023-8-30 19:53:44
                #include <bits/stdc++.h>
                using namespace std;
                int main()
                {
                    string f;
                    cin>>f;int q=0,w=0;
                    for(int i=0;i<int(f.length());i++){
                        if(f[i]=='Y'){
                            q++;
                            if(q<=5)w+=q;
                            else    w+=5;
                        }else{q=0;}
                    }cout<<w;
                    return 0;
                }
                
                • 1
                  @ 2023-7-23 8:13:46
                  #include <bits/stdc++.h>
                  using namespace std;
                  int main(){
                      int net=1,sum=0;//net 是 Number Every Time 的缩写
                      string s;
                      cin>>s;
                      for(int i=0;i<s.length();i++){
                          if(s[i]=='Y')sum+=net,net++;
                          if(net>5)net=5;
                          if(s[i]=='N')net=1;
                      }
                      printf("%d\n",sum);
                      return 0;
                  }
                  
                  • -2
                    @ 2022-7-3 13:31:13

                    #include<iostream>

                    using namespace std;

                    int main(){

                    /*
                    
                    	cpp
                    
                    */
                    
                    string s;//存放字符串
                    
                    int n = 0;
                    
                    int sum = 0;//开始有0分 
                    
                    int sc = 0;
                    
                    cin>>s;//读入s
                    
                    n = s.length();//获取字符串长度
                    
                    for(int i=0;i<n;i++){
                    
                    	/*
                    
                    	若签到 
                    
                    	*/
                    
                    	if(s[i]=='Y'){
                    
                    		if(sc<5){
                    
                    			sc++;
                    
                    		}
                    
                    		sum+=sc;
                    
                    	}//若未签到 
                    
                    	else{
                    
                    		sc = 0; 
                    
                    	}
                    
                    }//使用字符串下标获取是否签到 
                    
                    cout<<sum;//最后输出结果 
                    
                    return 0;
                    

                    }

                    • -3
                      @ 2022-5-26 16:30:56

                      用字符串或字符数组存放这串字符,接下来从0开始,遍历到这串字符结束,看当前字符为N还是Y;

                      • 若为N,则让计分器为0;

                      • 若为Y,则让计分器先自增,即cnt++;(因为前一天没登录的话,计分器为0,当天登录加1分,前一天登录了,则在前一天的分数上加1分)

                        1. 如果计分器分数大于5了,则让计分器等于5,(最大为5)
                        2. 把积分累加到sum中
                      int i = 0;
                          while (i < s.length())
                          {
                              if (s[i] == 'N') //如果为N,则计分器更新为0
                              {
                                  cnt = 0;
                              }
                              else //如果为Y,开始计分
                              {
                                  //计分器自增(前一天没登录,计分器为0,当天登录加1分)
                                  //前一天登录了,则在前一天的分数上加1分
                                  cnt++; 
                                  if (cnt > 5) //如果计分器大于5了,让计分器为5
                                  {
                                      cnt = 5;
                                  }
                                  sum += cnt; //把分数累加到sum中
                              }
                              i++;//下标自增
                          }
                      
                      • -11
                        @ 2022-4-24 16:02:42

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

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

                        ```cpp

                        你的代码

                        ```

                        </span>

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

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

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

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

                        • 1

                        信息

                        ID
                        1294
                        时间
                        1000ms
                        内存
                        256MiB
                        难度
                        4
                        标签
                        递交数
                        1527
                        已通过
                        756
                        上传者