站外题求助
  • 板块题目总版
  • 楼主linjinkun
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/11 11:30
  • 上次更新2024/7/11 13:26:26
查看原帖
站外题求助
1120828
linjinkun楼主2024/7/11 11:30

一个 hh:mm 格式的时间,使用 2424 小时制(即 23:59+00:01 = 00:00)。

定义“幸运时间”为 hh:mm 中包含数字 77 的时间,例如 17:01/00:17 等。

表上当前的时间点为 hh:mm,如果 hh:mm 不是幸运时间,就把表往前调 xx 分钟,直到调至幸运时间为止,求最少需要调多少次。

我的代码(9090 pts,一个点 WA):

#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,int>s;
signed main()
{
	int x;
	scanf("%d",&x);
	int h = x/60,m = x%60;
	h%=60;
	int a,b;
	scanf("%d %d",&a,&b);
	s[{a,b}] = 1;
	int cnt = 0;
	while(1)
	{
		string w = to_string(a);
		string q = to_string(b);
		bool flag1 = 0,flag2 = 0;
		for(int i = 0;i<w.size();i++)
		{
			if(w[i] == '7')
			{
				flag1 = 1;
				break;
			}
		}
		for(int i = 0;i<q.size();i++)
		{
			if(q[i] == '7')
			{
				flag2 = 1;
				break;
			}
		}
		if(flag1||flag2)
		{
			break;
		}
		int jinwei = b-m>=0?0:1;
		b = b-m>=0?b-m:60+(b-m);
		a = a-h-jinwei>=0?a-h-jinwei:24+(a-h)-jinwei;
		if(s.find({a,b})!=s.end())
		{
			printf("No Solution");
			return 0;
		}
		s[{a,b}] = 1;
		cnt++;
	}
	printf("%d",cnt);
	return 0;
}
2024/7/11 11:30
加载中...