CF1478-B. Nezzar and Lucky Number
CF1478-B. Nezzar and Lucky Number
题意:
题目给出一个数字\(d(1\leq d \leq 9)\)代表某个人最喜欢的数字。
题目定义了幸运数字,它的含义为:若一个数字的每个数位上至少出现一次这个人最喜欢的数字那么就称这个数字为幸运数字。例如这个人非常喜欢\(7\),那么\(711\)就是一个幸运数字,因为\(711\)的百位上有一个数字\(7\),而\(113\)就不是一个幸运数字,因为它的各个数位上都没有数字\(7\)。
题目任意给出一个数字\(a\),问你可不可以通过两个幸运数字的相加来得到它。
思路:
首先先假设\(d=7\),对于大于\(a=70\)的数字,比如\(71,75\)这些本身就是幸运数字,\(81,83,103\)这些数字虽然本身不是幸运数字,但是他们必然可以拆分成两个幸运数字相加的形式,举几个例子就能很好的说明:
若现在有个\(3\)个数字\(81,93,102\),那么\(81=(74-0)+(7+0)=74+7\),\(93=(86-10)+(7+10)=76+17\),\(102=(95-20)+(7+20)=75+27\),不止这些比较小的数字,再比如我随便打出来一个数字\(465387643875\),那么\((465387643875=465387643868-90)+(7+90)=465387643778+97\).
观察上面的式子,应该能看出规律了吧。对于任何大于\(80\)的数字,一开始设为\(7+X\),然后通过在\(X\)中减去一些数字(只减非个位上的数字)加到\(7\)上使得\(X\)的十位上也变成\(7\)。
解决了大于等于\(70\)的情况,现在就来看看小于70的情况。
在小于70的数字中,幸运数字只有\(7,17,27,37,47,57,67\),也就是说只有个位可能是\(7\),那么任意一个数字怎么判断能否由这些数字构成呢?由于这个\(a\)可能非常大,不可能通过暴力搜索的方法找到答案。
考虑这样一件事:在小于\(70\)的数字中,你要得到一个结尾为\(1\)的数字,需要几个\(7\) ?通过计算会发现需要\(3\)个\(7\)才能得到一个结尾为\(1\)的数字\(21\);那要得到一个结尾为\(6\)的数字呢?需要\(8\)个\(7\)。
有没有一些启发?如果现在有个数字是\(46\),那能否由上述的\(7\)个数字构成呢?不能,因为这些数字的个位都是\(7\),要得到个位为\(3\)的数字至少要\(8\)个\(7\)相加(这里说至少是因为你可以8个17相加,你可以3个27和5个47相加随你,但这里只说最终相加结果中最小的)也就是\(56\),而\(46<56\)无论如何都不可能由上述\(7\)个数字相加得到\(46\)。
那么大于等于\(56\)的、个位是\(6\)的数字可以有上述\(7\)个数字构成吗?可以的,比如\(66\),那\(66=7+7+7+7+7+7+17\)得到,只要灵活的在十位上加减数字就可以。
但这里有一些特殊情况,比如\(d=2\)的时候,\(2\)乘以任何数字都不可能得到一个奇数,也就是说如果给定的数字\(a\)的个位如果是奇数并且还小于\(20\)(对于大于\(20\)的情况,上述结论依然成立),那么他无论如何也不可能通过幸运数字相加得到\(a\)。
通过上面论述可以得到这样的结论:如果给定的数字\(a\)的个位数等于\(d*k\%10(k>0)\),\(k\)是可能的数字中最小的一个,并且\(a>=d*k\),那么\(a\)就可以由幸运数字相加得到。
以上仅仅作为演示,相关结论在其他的\(d\)以及\(a\)上依然适用。
AC代码
#include <cstdio>
#include <cstring>
#include <iostream>
int a[15];
void solve() {
memset(a, -1, sizeof a);
int q, d, t;
scanf("%d %d", &q, &d);
for (int i = 1; i < 10; i++) {
t = (d * i % 10);
if (a[t] == -1) {
a[t] = d * i;
}
}
for (int i = 0; i < q; i++) {
scanf("%d", &t);
bool flag = false;
if (t >= 10 * d) {
flag = true;
} else if (a[t % 10] != -1 && t >= a[t % 10]) {
flag = true;
}
printf("%s\n", flag ? "YES" : "NO");
}
}
int main() {
int T;
scanf("%d", &T);
while (T--) {
solve();
}
return 0;
}
CF1478-B. Nezzar and Lucky Number的更多相关文章
- 枚举 + 进制转换 --- hdu 4937 Lucky Number
Lucky Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- SCU3502 The Almost Lucky Number
Description A lucky number is a number whose decimal representation contains only the digits \(4\) a ...
- HDOJ 4937 Lucky Number
当进制转换后所剩下的为数较少时(2位.3位),相应的base都比較大.能够用数学的方法计算出来. 预处理掉转换后位数为3位后,base就小于n的3次方了,能够暴力计算. . .. Lucky Numb ...
- 题目1380:lucky number
转载请注明文本链接 http://blog.csdn.net/yangnanhai93/article/details/40441709 题目链接地址:http://ac.jobdu.com/prob ...
- HDU 3346 Lucky Number
水题 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> us ...
- 九度oj 题目1380:lucky number
题目描述: 每个人有自己的lucky number,小A也一样.不过他的lucky number定义不一样.他认为一个序列中某些数出现的次数为n的话,都是他的lucky number.但是,现在这个序 ...
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)
A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- ZOJ 3233 Lucky Number
Lucky Number Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...
- B - Nearly Lucky Number
Problem description Petya loves lucky numbers. We all know that lucky numbers are the positive integ ...
随机推荐
- 计算起始车站车费问题-JavaScript数组对象写法
计算起始站车费 题目:深圳--60--广州--50-虎门--40- -中山--36-珠海一34-澳门一89一香港以上车票费用计算,如坐车深圳到广州60元,广州到虎门50元,深圳到虎门就是60+50-1 ...
- 【Oracle】权限相关
系统权限 SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'CHAXUN' UNION ALL SELECT * FROM DBA_SYS_PRIVS WHER ...
- kubernets之headless
一 认识headless服务 1服务以及服务的作用相信大家都已经耳熟能详了吗,服务接受请求,并且随机的将请求转发到相关联的任一pod来处理请求,但是考虑另外一种场景, 如果有客户端需要知道这个服务关 ...
- buuctf—web—高明的黑客
打开靶机,看到如下界面 于是打开www.tar.gz 下载后发现是一个放有大量php文件的文件夹 看了大佬的wp后明白了是fuzzing 附上大佬的脚本 import os import re imp ...
- Netty学习:ChannelHandler执行顺序详解,附源码分析
近日学习Netty,在看书和实践的时候对于书上只言片语的那些话不是十分懂,导致尝试写例子的时候遭遇各种不顺,比如decoder和encoder还有HttpObjectAggregator的添加顺序,研 ...
- ping 命令示例
将下面的代码粘贴到记事本中,然后保存为扩展名为BAT的文件,运行就可以将网段内ping不通的IP地址写入到文本文件IP.txt中. @echo offsetlocal ENABLEDELAYEDEXP ...
- SAP中使用FTP服务
SAP中简单的FTP技术实现基本上如下几个步骤: 1.SM59建立FTP的RFC destination. 可以通过执行SAP的标准程序RSFTP005,自动创建两个名为SAPFTP何SAPFTPA的 ...
- Spring-AOP为类增加新的功能
适配器的简单应用实现: 比如:有一个类Car,在类中有两个属性一个为汽车名name,另一个为速度speed.其行为为run(). 现在有一辆车BMWCar 增加了GPS功能.如下实现: 基本类: pu ...
- 24V转5V稳压芯片,高效率的同步降压DC-DC变换器3A输出电流
PW2330开发了一种高效率的同步降压DC-DC变换器3A输出电流.PW2330在4.5V到30V的宽输入电压范围内工作集成主开关和同步开关,具有非常低的RDS(ON)以最小化传导损失.PW2330采 ...
- 转 Jmeter测试实践:文件上传接口
Jmeter测试实践:文件上传接口 1.打开jmeter4.0,新建测试计划,添加线程组.根据实际情况配置线程属性. 2.添加HTTP请求. Basic部分修改如下: Advanced部分我做任何 ...