首页 > Windows开发 > 详细

B. Planet Lapituletti

时间:2021-03-07 15:06:52      阅读:30      评论:0      收藏:0      [点我收藏+]

Link

一个小模拟 愣是写了一个钟头...
先上代码 再说启示

Code

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back

const int N = 10000;
int H,M,x,y,t;
char tmp;
int mir[10]={0,1,5,-1,-1,2,-1,-1,8,-1};
bool check(int x,int y)
{
	int a,b,c,d;
	a=mir[x/10],b=mir[x%10],c=mir[y/10],d=mir[y%10];
	if(a==-1||b==-1||c==-1||d==-1) return false;
	return d*10+c<H && b*10+a<M;
}
int main()
{
	ios::sync_with_stdio(false);

	cin>>t;
	while(t--)
	{
		cin>>H>>M;
		cin>>x>>tmp>>y;
		while(1)
		{
			if(check(x,y))
			{
				cout<<x/10<<x%10<<":"<<y/10<<y%10<<endl;
				break;
			}
			y=(y+1)%M;
			if(y==0) x=(x+1)%H;
		}
	}
}

启发

  1. 12:21这样的时间可以cin>>x>>ch>>y;
  2. 输出HH:MM这样的时间不一定要用printf("%02d:%02d")
  3. 哪怕是个位数也可以用x/10得到十位上的0,也就是说每个数都可以看成有前导零
  4. 位数很少的就别傻傻的while(x) a[++cnt]=x%10,x/=10 直接x/10 x%10方便很多

B. Planet Lapituletti

原文:https://www.cnblogs.com/JOoooo/p/14493983.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!