计蒜客 428(人人都有极客精神-日期问题)

人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目。海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位、月份占 2 位、天数占 2 位)。

日期电子屏幕上每个数字对应的显示如下图:

输入格式

从上图可以得知每个数字对应的笔画数,比如 2 的笔画数是 5,8 的笔画数是 7,等等。人人员工小明看到了项目的启动日期 d,但是项目的结束日期没看清楚,只知道电子屏幕上项目结束日期所需的笔画数为 m,你能帮小明算出来项目执行所用的时间天数么?

输入数据有多组。第一行输入一个整数 T (1 ≤ T ≤ 20),表示一共有 T 组数据。

接下来每组数据 2 行,共 T * 2 行。每组第一行输入一个长度为 8 的仅包含数字的字符串 d,表示项目的启动日期,形式为 YYYYMMDD。每组第二行输入一个非负整数 m (0 ≤ m ≤ 100),表示电子屏幕上项目结束日期所需的笔画数。输入日期保证合法。

输出格式

一共输出 T 行,每行一个整数,表示该组数据对应的项目执行所用的时间天数。如果最近的符合要求的结束日期超过 2999 年 12 月 31 日或无解则输出 -1,否则输出符合要求的最小的解。

样例1

输入:

2
20150718
30
29991231
38

输出:

85
-1

直接暴力

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define MAXT (20+10)
#define MAXN (10+10	)
typedef long long ll;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return (a-b+(a-b)/F*F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int g[20]={6,2,5,5,4,5,6,3,7,6};
int is_l(int y)
{
    if (y%4==0&&y%100!=0) return 366;
    if (y%400==0) return 366;return 365;
}  

char s[MAXN];
int A[MAXN];
int T,m;

int d1,m1,Y1;
void next()
{
	if (is_l(Y1)==366) a[2]=29;else a[2]=28;
	d1++;
	if (d1>a[m1]) d1=1,m1++;
	if (m1>12) m1=1,Y1++;
}
int count()
{
	return g[Y1/1000]+g[(Y1/100)%10]+g[(Y1/10)%10]+g[Y1%10]+g[m1/10]+g[m1%10]+g[d1/10]+g[d1%10];
}

int main()
{
//	freopen("num.in","r",stdin);
//	freopen("num.out","w",stdout);

	cin>>T;
	while(T--)
	{
		cin>>s>>m;
		Rep(i,8) A[i+1]=s[i]-'0';
		Y1=A[1]*1000+A[2]*100+A[3]*10+A[4];
		m1=A[5]*10+A[6];
		d1=A[7]*10+A[8];
	//	cout<<Y1<<' '<<m1<<' '<<d1<<endl;

		if (m>56||m<16)
		{
			cout<<"-1"<<endl;
			continue;
		}
	//	cout<<count()<<endl;

		if (m==count())
		{
			cout<<"0"<<endl;
			continue;
		}
		if (Y1==2999&&m1==12&&d1==31)
		{
			cout<<"-1"<<endl;continue;
		}

		int ans=0;
		while (1)
		{
			next();ans++;
	//		cout<<Y1<<' '<<m1<<' '<<d1<<endl;
			if (m==count()) break;
			if (Y1==2999&&m1==12&&d1==31)
			{
				ans=-1;break;
			}
		}

		cout<<ans<<endl;

	}

	return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 17:28:01

计蒜客 428(人人都有极客精神-日期问题)的相关文章

计算客 (人人都有极客精神)爆力

人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: 输入格式从上图可以得知每个数字对应的笔画数,比如 2 的笔画数是 5,8 的笔画数是 7,等等.人人员工小明看到了项目的启动日期 d,但是项目的结束日期

计蒜之道2015程序设计大赛初赛第二场——人人都有极客精神

计蒜之道2015程序设计大赛初赛第二场——人人都有极客精神 (一)体面 人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: 从上图可以得知每个数字对应的笔画数,比如 2 的笔画数是 5,8 的笔画数是 7

人人都有极客精神

http://www.jisuanke.com/minicourse/59/438 人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: 从上图可以得知每个数字对应的笔画数,比如 2 的笔画数是 5,8 的

极客头条---人人都是主编(下)

 什么是极客?独一无二?展现自我 "极客"是来自英文"Geek"一词的翻译,又译作"奇客".以前是对那些残忍的马戏表演者和令人厌恶的不食人间烟火的计算机癖的老式称谓,用以形容他们的自由思想和离经叛道的计算机嬉皮士的形象.很长时间在西方文化里geek的意思一直偏向鄙意,在PC革命初期,Geek开始衍生为一般人对电脑黑客的贬称,他们具有极高的技术能力,对计算机与网络的痴迷有时会达到不正常的状态.但如今,随着互联网的日益普及,那些一直被视为怪异者的边缘

计蒜之道 初赛 第二场 题解

人人都有极客精神 人人公司是一家极为鼓励极客精神的公司,当有重要的项目需要上线但又时间太紧,甚至需要当天上线的时候,往往会挂起海盗旗开启电子日期显示,让大家可以在对时间有更明确的感知的情况下,同心协力搞定重要的项目.海盗旗下方的电子屏显示的日期形式为 YYYYMMDD (年份占 4 位.月份占 2 位.天数占 2 位). 日期电子屏幕上每个数字对应的显示如下图: <img src="http://res.jisuanke.com/img/nanti/428.png" <=&

智能硬件别做成人玩具,请把极客暂时遗忘

大多数智能设备在设定初始,就朝着酷炫和有趣的方向走.这条路不能说走错了,只能说陷入了一个小圈子的范畴,即解决的只是一种极客需求.成为了玩具. 文/张书乐 当下是个智能硬件爆炸的时代,从最初的智能手机.智能手表,***,诸如什么手环.戒指.眼镜.跑鞋.跑步机.茶杯.拐棍乃至婴儿摇篮.似乎一夜之间,我们的生活已经被彻底的智能化了. 可绝大多数智能产品,都很失败.为何?一个朋友戏谑道:去看京东的智能产品众筹页面吧,那里卖的都是成人玩具. 第一问:为何大多数智能硬件都象玩具? 其实这个问题的答案并不复杂

极客标签:可能是目前最好的前端代码学习工具

英国著名作家萧伯纳有一句名言:"两个人交换了苹果,每个人手里还是只有一个苹果:但是两个人交换了思想,每个人就同时有了两个人的思想."这说的是知识的分享对于人类进步的重要意义.时间到了现代,技术进步带给人们更多样化的沟通方式.可是,当人们交换各种类型的知识的时候,却发现依然没那么容易. 绝大多数有学问的人都选择了出书:网络的普及也让各种各样的博客出现,之后则是微信公众号的天下:也有人选择了言传身教的现代版--录制讲学视频. 但以上的各种方式都不适合编程学习,特别是web设计方面的学习.你

极客头条这些事

在这个闲来无事的周末,我悄悄走进了极客头条--这一深度交流技术话题的社区,那么故事开始了-- 我对极客头条的认识 听到"极客"这一词是我刚来北京不久,参加一个技术大会时,极客学院的一位大咖提到的,说"极客是一个对某种技术有着强烈爱好和执着追求群体". 而我现在要提到的极客头条有极客两个字,那极客头条是什么呢?极客头条是CSDN社区网站的一个产品,是分享优质技术文章.深度交流技术话题的社区. 我个人觉得极客头条是这样一个东西:是一个优质文章的收集器,你可以将任何你认为

极客头条使用体验

一.我对极客头条的认识 我从以下几个方面说一下我对极客头条的感受: 1.  简约.整体设计采用简约的设计风格,能够突出主题内容,左边是分类的选择. 2.  内容分类聚焦.能够从"最新"和"最热"两个专注度高的维度,给读者以便捷操作.同时有的板块开通了"周刊".我觉得这样设计能够充分利用有限空间的同时,也控制了功能的繁琐. 3.  采用html5的设计风格,兼顾手持终端和PC的操作习惯. 总体上来说:简约.直接.够用. 二.极客头条使用体验 1.