纪中5日T3 1566. 幸运锁(lucky.pas/c/cpp)
1566. 幸运锁(lucky.pas/c/cpp)
题目描述
有一把幸运锁,打开它将会给你带来好运,但开锁时需要输入一个正整数(没有前导0)。幸运锁有一种运算,对于一个正整数,返回他的相邻两位数字间的差,如1135,运算结果为22(会去掉前导0)。
现在已知只有经过反复运算最终结果为7的数才能打开这把锁,给你一个区间[a,b],问该区间中有多少个能打开幸运锁的幸运数。
输入
第一行两个整数a,b。
输出
一个整数K,表示共有多少个这样的数。
样例输入
1 10
样例输出
1
数据范围限制
【限制】
1<=a<=b<=10^9。
30%的数据有b<=10^6。
Solution(28分)

貌似正好遇上服务器出问题了呢
这就不是我的问题了
(这也不是服务器的问题嘛!你怎么可以这样想呢?)
我觉得我的代码是正确的
而测试点2呢,我用一个打表的程序也过了
table
首先奉上我的table.cpp
//幸运锁表
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,lucky,h,f[],ans;
int logn(int num)
{
if(num==) return ;
return log(num)/;
}
void fj(int num)
{
int len=logn(num);
for(int i=;i<len;i++)
{
f[i]=((int)(num/pow(,i)))%;
}
return;
}
void run(int num[],int len)
{
// 检测是否为0000000..7||0000000..*
bool flag7=;
for(int i=;i<len;i++)
if(num[i]!=) {
flag7=;
break;
} if(flag7)
{
if(num[]==)
{
cout<<h<<",";
ans++;
} return;
} // 算差
int w[len];
memset(w,,sizeof(w));
for(int i=;i<len-;i++)
w[i]=abs(num[i]-num[i+]);
// 删除前导零
int flag0=;
for(int i=len-;i>=;i--)
{
if(flag0)
{
if(num[i]==)
len--;
else
flag0=;
}
else
break;
}
run(w,len-);
}
int main()
{
// freopen("lucky.in","r",stdin);
// freopen("lucky表.txt","w",stdout);
for(h=;h<=;h++)
{
//分解数字
fj(h);
run(f,logn(h));
}
cout<<"\nans="<<ans;
return ;
}
想要过程解释,还请看注释。
正解会再做详细解释。
这个cpp可以打出从a~b所有满足条件的数
但我并没有找到什么规律鸭
Code(46分)
//幸运锁
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,lucky,f[],ans;
int logn(int num)
{
if(num==) return ;//本来log(1)会等于0的
return log(num)/;
}
void fj(int num)
{
int len=logn(num);
for(int i=;i<len;i++)
{
f[i]=((int)(num/pow(,i)))%;
}
return;
}
void run(int num[],int len)
{
// 检测是否为0000000..7||0000000..*
bool flag7=;
for(int i=;i<len;i++)
if(num[i]!=) {
flag7=;
break;
}
//如果flag7==1,就说明该数只有个位了,其他位全是零
if(flag7)
{
if(num[]==)
ans++;
return;//一个位数是一定不能变成7的
}
// 算差
int w[len];
memset(w,,sizeof(w));//开始时忘了初始化,坑了我好久
for(int i=;i<len-;i++)
w[i]=abs(num[i]-num[i+]);//相邻两数之差要取绝对值
// 删除前导零
int flag0=;
for(int i=len-;i>=;i--)
{
if(flag0)
{
if(num[i]==)
len--;
else
flag0=;
}
else
break; }
run(w,len-);//就是这里! 求差后,len一定会自然的少一个
}
int main()
{
// freopen("lucky.in","r",stdin);
// freopen("lucky.out","w",stdout);
cin>>a>>b;
for(int i=a;i<=b;i++)
{
//分解数字
fj(i);
run(f,logn(i));
}
cout<<ans; return ;
}
修改了这个地方后,成功的又对了一个测试点。

下载一个数据看看?
File Not Found!
额
老师呢,看了看那些100分的同学的代码。
大小都是几MB几MB的。
又因为我是时间超限……
你明白了吗?
打表!
那个。。。源代码太长,我我我上传不了。
就先发个压缩包吧
https://files-cdn.cnblogs.com/files/send-off-a-friend/lucky.rar
数论
等待着数论的方法出现。。。
老师加油!
纪中5日T3 1566. 幸运锁(lucky.pas/c/cpp)的更多相关文章
- 纪中21日T3 2118. 【2016-12-30普及组模拟】最大公约数
纪中21日T3 2118. 最大公约数 (File IO): input:gcd.in output:gcd.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中10日T3 2296. 神殿 bfs
2296. 神殿 (File IO): input:temple.in output:temple.out 时间限制: 1500 ms 空间限制: 524288 KB 具体限制 Goto Prob ...
- 纪中17日T1 2321. 方程
纪中17日T1 2321. 方程 (File IO): input:cti.in output:cti.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto ...
- 纪中10日T1 2313. 动态仙人掌
纪中10日 2313. 动态仙人掌 (File IO): input:dinosaur.in output:dinosaur.out 时间限制: 1500 ms 空间限制: 524288 KB 具 ...
- 纪中23日c组T3 2161. 【2017.7.11普及】围攻 斐波那契数列
2161. 围攻 (File IO): input:siege.in output:siege.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto Prob ...
- 纪中23日c组T2 2159. 【2017.7.11普及】max 洛谷P1249 最大乘积
纪中2159. max 洛谷P1249 最大乘积 说明:这两题基本完全相同,故放在一起写题解 纪中2159. max (File IO): input:max.in output:max.out 时间 ...
- 洛谷P1880 [NOI1995]石子合并 纪中21日c组T4 2119. 【2016-12-30普及组模拟】环状石子归并
洛谷P1880 石子合并 纪中2119. 环状石子归并 洛谷传送门 题目描述1 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石 ...
- 纪中20日c组T2 2122. 【2016-12-31普及组模拟】幸运票
2122. 幸运票 (File IO): input:tickets.in output:tickets.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 Goto P ...
- 纪中18日c组模拟赛
T2 GMOJ2127. 电子表格 (File IO): input:excel.in output:excel.out 时间限制: 1000 ms 空间限制: 262144 KB 具体限制 ...
随机推荐
- Nginx+uWSGI+Django原理(转发)
Python的Web开发中,如果使用Django框架,那么较为成熟稳定的服务器架构一般是Nginx+uWSGI+Django.而为什么一定要三个结合在一起呢?直接使用Django的runserver来 ...
- .Net Core中IOC容器的使用
打代码之前先说一下几个概念,那就是什么是IOC.DI.DIP 虽然网上讲这些的已经有很多了,我这里还是要再赘述一下 IOC容器就是一个工厂,负责创建对象的 IOC控制反转:只是把上端对下端的依赖,换成 ...
- Cmake知识----编写CMakeLists.txt文件编译C/C++程序(转)
1.CMake编译原理 CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt ...
- 分布式系统的CAP定理
CAP定理: 在一个分布式系统中,Consistency(数据一致性). Availability(服务可用性).Partition tolerance(分区容错性),三者不可兼得. 一致性(Cons ...
- Linux安装Redis、后台运行、系统自启动
Redis是用C语言编写的开源免费的高性能的分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库. 安装 1)从官网http://download.redis.io/releases/下载re ...
- Python中的用open打开文件错误,FileNotFoundError: [Errno 2] No such file or directory:
学习python的文件处理,刚开始打开文件,代码如下 f = open('test_file.txt', 'r', encoding='UTF-8')RES = f.readlines()print( ...
- Java Web Servlet知识点讲解(二)
一.定义Servlet: public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpSer ...
- JS中变量、作用域的本质,定义及使用方法
全局作用域和局部作用域 全局作用域 局部作用域:函数作用域 全局作用域在全局和局部都可以访问到,局部作用域只能在局部被访问到 var name="cyy"; function fn ...
- Java实体对象为什么要实现Serializable接口?
前言 Java实体对象为什么一定要实现Serializable接口呢?在学JavaSE的时候有些实体对象不实现Serializable不是也没什么影响吗? 最近在学习mybatis的时候发现,老师写的 ...
- SWIG 3 中文手册——10. 参数处理
目录 10 参数处理 10.1 typemaps.i 库 10.1.1 引言 10.1.2 输入参数 10.1.3 输出参数 10.1.4 输入 / 输出参数 10.1.5 使用不同的名称 10.2 ...