3 条题解

  • 1
    @ 2025-1-29 20:39:15

    luogu#B3921. [GESP202312 一级] 小杨的考试 题解

    题意

    题意十分明显,今天是星期 xx,求第 nn 天后是星期几。

    思路

    根据样例 11

    今天是星期一,过 66 天,很明显是星期日。

    似乎,可以直接加上过了几天就行了。

    根据样例 22

    今天是星期五,过 33 天,是星期一。

    这里,我们发现,因为 5+3>85 + 3 > 8,所以并不这么简单,我们还需要对 5+35 + 3,进行 mod 7mod\ 7 的操作,例如样例 22(5+3) mod 7=1(5 + 3)\ mod\ 7 = 1

    可以得出代码 day = (today + after_day) % 7;

    但此时还有一个问题,样例一中的数据,会使 day = 0,而不是 77,这时,就需要手动判断一下。

    完整代码

    #include <iostream>
    
    using namespace std;
    
    int main () {
        int today, after_day;
        cin >> today >> after_day;
        int day = (today + after_day) % 7;
        if (day == 0)
            cout << 7 << endl;
        else
            cout << day << endl;
        return 0;
    }
    
    • 1
      @ 2024-11-24 21:40:37

      luogu-B3921题解

      主要题意

      现在是星期 xx ,经过 nn 天后是星期几。

      解题思路

      暴力模拟,只要 nn 大于 77 就减 77 ,然后输出。

      上代码!

      #include <bits/stdc++.h> 
      using namespace std;
      long long x=0,n,i;
      int main()
      {
      	
      	cin>>x>>n;
      	while(n>7)
      		n=n-7;
      	n=n+x;
      	if(n>7)
      		n=n-7;
      	cout<<n;
      }
      
      

      代码优化

      我们发现,一只减 77 的结果即为 MOD 77 所得的余数。 注意:如果结果为 00 输出 77 。(即星期天)

      #include <bits/stdc++.h> 
      using namespace std;
      long long x=0,n,i;
      int main()
      {
      	
      	cin>>x>>n;
      	if((n+x)%7==0)
      		cout<<7;
      	else
      		cout<<(n+x)%7;
      }
      
      
      • 0
        @ 2024-12-20 11:07:19

        #include <bits/stdc++.h> using namespace std; long long x=0,n,i; int main() {

        cin>>x>>n;
        while(n>7)
        	n=n-7;
        n=n+x;
        if(n>7)
        	n=n-7;
        cout<<n;
        

        }

        • 1

        信息

        ID
        4937
        时间
        1000ms
        内存
        512MiB
        难度
        1
        标签
        递交数
        67
        已通过
        22
        上传者