3 条题解

  • 5
    @ 2022-8-16 23:24:02

    也许代码不是最短的,但是相信我,绝对是最优(时间、空间复杂度最低)并且最容易看懂的

    #include<bits/stdc++.h>
    using namespace std;
    short y,m,w,cnt=1,ans;
    short lastDate[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; // 月份天数表
    int main(){
        cin>>y>>m>>w;
        if(m==2){ // 如果月份是2再判断是否为闰年
            if((y%100==0&&y%400==0)||(y%100!=0&&y%4==0))lastDate[2]++;
        }
        while(cnt<=lastDate[m]){ // 遍历直到最后一天
            if(w%6!=0&&w%7!=0){ // 找到第一周周末后就不用遍历每天了
                cnt++;
                w++;
            }else{ // 只遍历周末
                ans++;
                if(w%7==0){ // 如果是周日,就直接跳到下周六
                    w=6;
                    cnt+=6;
                }
                else{
                    w++;
                    cnt++;
                }
            }
        }
        cout<<ans;
        return 0;
    }
    

    虽然在这么低的数量级中不优化那一点点的复杂度也毫无问题,但是既然编程就要做到最优,而不是想着钻题目的空子(当然如果你真在考csp而且时间不够了就可以这样awa)

    • 1
      @ 2022-3-23 9:58:06

      由于测试点太水把2月定位28天即可AC

      #include <cstdio> //我就不用万能头~
      #include <iostream>
      using namespace std;
      
      int a , b , c , sum; // 年,月,日 ,总数
      int aaa[15] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31};
      // 天数
      
      bool qwq(int yy){ //闰年判断(因测试点太拉,所以可省略)
      	if(yy % 100 == 0) { if(yy % 400 == 0) return true;}
      	else if(yy % 4 == 0) return true;
      	return false;
      }
      
      int main(){
      	cin >> a >> b >> c; //输入
      	if(b == 2 && qwq(a)) aaa[2] = 29; // 改2月(可省略)
      	for(int i = 1;i <= aaa[b];i++,c++)
      		if(c == 8) c = 1; //限制范围
      		else if(c == 6 || c == 7) sum++;
      	printf("%d",sum);
          return 0; //好习惯
      }
      

      我不是dalao!

      • -2
        @ 2022-4-24 16:44:25

        写题解请注意

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

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

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

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

        ```cpp

        你的代码

        ```

        </span>

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

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

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

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

        题解被删除的可能

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

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

        • 1

        信息

        ID
        1263
        时间
        1000ms
        内存
        256MiB
        难度
        3
        标签
        递交数
        184
        已通过
        96
        上传者