首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Best Coder】Baby Ming and phone number(水)

【Best Coder】Baby Ming and phone number(水)

作者头像
FishWang
发布2025-08-27 08:43:08
发布2025-08-27 08:43:08
1960
举报

Baby Ming and phone number

 Accepts: 243

 Submissions: 565

 Time Limit: 3000/1500 MS (Java/Others)

 Memory Limit: 65536/65536 K (Java/Others)

问题描述

代码语言:javascript
复制
铭宝宝收集了很多手机号码,没错,他想卖手机号码赚钱。
他觉得有如下性质的手机号码可以卖aa元钱,其他的号码,只能卖bb元钱。
1.末5位数字相同(比如123-4567-7777)
2.末5位是连续递增或者连续递减的,且相邻数位相差1的数(比如188-0002-3456)
3.末8位是一个表示日期的数字,并且表示的日期在1980年1月1日至2016年12月31日内(比如188-1888-0809表示1888年8月9日)
铭宝宝想知道卖掉所有的手机号码能赚多少钱。

输入描述

代码语言:javascript
复制
输入T(T \leq 30)T(T≤30)表示TT组测试数据
输入n(n \leq 100,000)n(n≤100,000)表示铭宝宝有nn张手机号码(没有相同的手机号码)
输入22个正整数a, ba,b, 表示两种类型的手机号码分别能卖aa元和bb元(b \leq 1000, a \leq 100,000)(b≤1000,a≤100,000)
接下去nn行,每行输入11个手机号码(|phonenumber|==11,首位非0)

输出描述

代码语言:javascript
复制
输出答案

输入样例

代码语言:javascript
复制
1
5
100000 1000
12319990212
11111111111
22222223456
10022221111
32165491212

输出样例

代码语言:javascript
复制
302000

读懂题去比较就行了,不是很难的。

代码如下:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool run(int y)
{
	if ((y%400==0) || (y%4==0 && y%100!=0))
		return true;
	return false;
}
char a[11];			//	1234 56 789 10 11
bool check1()		//	0123 45 678 9  10
{
	for (int i=9;i>=6;i--)
	{
		if (a[i]!=a[10])
			return false;
	}
	return true;
}
bool check2()
{
	int dot=0;
	for (int i=10;i>=7;i--)
	{
		if (a[i]==a[i-1]+1)
			dot++;
	}
	if (dot==4)
		return true;
	for (int i=10;i>=7;i--)
	{
		if (a[i]!=a[i-1]-1)
			return false;
	}
	return true;
}
bool check3()
{
	int y,m,d;
	y=(a[3]-'0')*1000+(a[4]-'0')*100+(a[5]-'0')*10+a[6]-'0';
	m=(a[7]-'0')*10+a[8]-'0';
	d=(a[9]-'0')*10+a[10]-'0';
	if (m==2 && run(y))
		d--;
	if (y>=1980 && y<=2016 && m>=1 && m<=12 && d<=day[m])
		return true;
	return false;
}
int main()
{
	int u;
	int n;
	int m1,m2;
	int ans;
	scanf ("%d",&u);
	while (u--)
	{
		scanf ("%d",&n);
		scanf ("%d %d",&m1,&m2);
		ans=0;
		for (int i=1;i<=n;i++)
		{
			scanf ("%s",a);
			if (check1() || check2() || check3())
				ans+=m1;
			else
				ans+=m2;
		}
		printf ("%d\n",ans);
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Baby Ming and phone number
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档