列表

详情


NC54613. Broken LED

描述


xx带学的超市的格局,是和别处不同的:是两三个长条形的大柜台,柜上一个收银机和刷卡机,可以随时刷卡。上学的人,傍晚没了课,每每花几块或十几块钱,买些东西;倘肯多花两三块钱,便可以买一根烤香肠。

我从十二岁起,便在这个超市里当收银员,老板娘说,我样子太傻,怕侍候不了顾客,就在柜台收收钱吧。但我脑子不灵光,操作收银台速度也慢,常常在后面排着二十几个人的情况下一个人慢吞吞地收钱。所以过了几天,老板娘又说我干不了这事。幸亏荐头的情面大,辞退不得,便改为专管操作刷卡机的一种无聊职务了。

我从此便整天的站在柜台里,专管我的职务。虽然没有什么失职,但总觉得有些单调,有些无聊。只有Bob到店,才可以笑几声,所以至今还记得。

xx带学的超市的刷卡机,是用上面图里的那种数码管显示的四位整数。把卡放到读卡器上,就可以显示出卡里的余额。有天,Bob到了店里,对柜里说:“拿两支笔,要一根烤香肠。” 便把卡放到读卡器上,但恰好那天,读卡器坏了,有几根数码管本应亮着,却错误地灭掉了,但我并不知道有哪几根管子坏了。于是,他对我说道,“你读过书么?”我略略点一点头。他说,“读过书,……我便考你一考。你看我把卡放上去,它就读出了一个四位数,但是这个四位数是不准确的,因为有几根管子坏掉了。对不对?我现在买了元的东西,你看这个读卡器显示的余额,我在最乐观的情况下余额能不能够买下这元的东西?”

我人都傻了,求助排在队伍后面的你帮我回答他这个问题。

输入描述

第一行是一个正整数,表示测试数据的规模。
接下来组数据,每组数据第一行是一个整数,表示Bob买的商品的总价格;接下来有7行字符串,每行长为27(=6*4+3)个字符,表示读卡器读出的内容图样。 表示该位置为灭,而 (大写字母X)表示该格为亮。每个数字的高度为7个字符,宽度为6个字符,相邻的数字之间用一列 隔开。具体地,每种数字的表示方式见下方。每个数字一共用7根数码管表示,每根数码管不是亮的就是灭的,即不会出现同一根数码管上一段为亮,另一段为灭的情况。
注意可能有一些数码管错误地灭掉了,但不可能出现本应灭掉的数码管错误地亮起的情况

输出描述

对每组数据,输出一行"Yes"(不含引号)表示在最乐观的情况下,Bob的钱能够买下这元的商品,否则输出一行"No"(不含引号),表示无论如何Bob都不可能买下这元的商品。注意大小写。

示例1

输入:

3
4396
.XXXX...XXXX...............
X......X....X.X....X......X
X......X....X.X....X......X
.XXXX..........XXXX........
.....X.X....X......X......X
.....X.X....X......X......X
.XXXX...XXXX...............
701
........XXXX...XXXX...XXXX.
.......X...........X......X
.......X...........X......X
........XXXX...XXXX...XXXX.
.......X....X......X.X.....
.......X....X......X.X.....
........XXXX...XXXX...XXXX.
9961
........XXXX...XXXX........
.....X.X....X......X.X....X
.....X.X....X......X.X....X
...............XXXX...XXXX.
.....X.X....X.X...........X
.....X.X....X.X...........X
........XXXX...XXXX........

输出:

Yes
Yes
No

说明:

对第一组样例,显示的数字5014>4396,所以可以买下商品。

对第二组样例,有可能第一个数字的灯管都坏掉了,卡内的余额可能是4632(当然了,也有可能是3632,或是3682,或是其他的),大于701,所以也可以买下商品。

对第三组样例,在所有的情况下都不可能买下价格为9961的商品。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3(3.9) 解法, 执行用时: 109ms, 内存消耗: 2684K, 提交时间: 2020-11-20 15:12:23

T=int(input())
def f(l):
    if l[5][0]=='X':
        return '8'
    else:
        return '9'
for i in range(T):
    x=int(input())
    s=''
    a,b,c,d=[],[],[],[]
    for j in range(7):
        s=input()
        a.append(s[:6])
        b.append(s[7:13])
        c.append(s[14:20])
        d.append(s[21:27])
    n=f(a)+f(b)+f(c)+f(d)
    n=int(n)
    if n>=x:
        print('Yes')
    else:
        print('No')

C++(clang++11) 解法, 执行用时: 42ms, 内存消耗: 376K, 提交时间: 2020-11-22 22:36:10

#include<bits/stdc++.h>
using namespace std;
int main(){
	int t,n,sum;
	char s[10][30];
	scanf("%d",&t);
	while (t--){
		cin>>n;
		sum=0;
		for (int i=1;i<=7;i++){
			cin>>s[i];
		}
		for (int i=3;i>=0;i--){
			if (s[5][7*i]=='X'){
				sum+=8*pow(10,(3-i));
			}else{
				sum+=9*pow(10,(3-i));
			}
		}
		if (sum>=n){
			cout<<"Yes"<<endl;
		}else{
			cout<<"No"<<endl;
		}
	}
	return 0;
}

上一题