2 条题解

  • 1
    @ 2025-12-31 15:22:26

    这一题我承认有点坑。

    因为 24:00 等价于 00:0001:60 等价于 02:00。所以这一题更推荐推公式来解决,不知道有没有其他乱七八糟的解法。

    公式其实也比较好推:

    • 由于时间是循环的(24 小时制),我们考虑 24 小时 = 1440 分钟 为一个周期。
    • 然后考虑两段时间的时间差,选择向前或者向后更优者即可

    附带一个小知识点,scanf可以处理这种乱七八糟的输入,详见代码。

    (附:某某教练曾被此题坑点斩于马下,所以大家以后写题一定要认真读题,认真分析性质!)

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main() 
    {
    	int a1,b1,a2,b2;
    	scanf("%d:%d",&a1,&b1);
    	scanf("%d:%d",&a2,&b2);
        int T1=a1*60+b1;
        int T2=a2*60+b2;
        int delta=(T2-T1+1440)%1440;
        int ans=min(delta,1440-delta);
        printf("%d",ans);
        return 0;
    }
    
    • 0
      @ 2026-6-5 15:22:16
      using namespace std;
      int main() {
      	char c;
          int a,aa,b,bb,q,t;
          cin>>a>>c>>b;       
          cin>>aa>>c>>bb;
          t = a * 60 + b;    
          q = aa * 60 + bb;  
          
          int diff = t > q ? t - q : q - t; 
          int rev = 1440 - diff;            
      	if(diff < rev){
      		cout<<diff;
      	}else{
      		cout<<rev;
      	}
          
          return 0;
      }
      
      
      • 1

      信息

      ID
      8
      时间
      1000ms
      内存
      256MiB
      难度
      2
      标签
      递交数
      148
      已通过
      37
      上传者