CCF软考---《有趣的数》
脑子一热报了CCF的软测。。但是又觉得好像并没有什么卵用,就当为蓝桥杯预热然后顺便去软件学院玩一玩吧,遇到一个有意思的题:
time limits : 1s
1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。
2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。
3. 最高位数字不为0。
因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。
请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。
d[i][2] = (d[i-1][0] + d[i-1][2])%mod;
d[i][3] = (d[i-1][1] + d[i-1][3]*2 )%mod;
d[i][4] = (d[i-1][2] + d[i-1][1] + d[i-1][4]*2)%mod;
d[i][5] = (d[i-1][3] + d[i-1][4] + d[i-1][5]*2)%mod;
另外注意会爆int
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int mod = ;
int n;
ll d[maxn][];
int main()
{
for(int i = ; i <= ; ++i)
{
d[i][] = ;
d[i][] = (d[i-][] + d[i-][]*)%mod;
d[i][] = (d[i-][] + d[i-][])%mod;
d[i][] = (d[i-][] + d[i-][]* )%mod;
d[i][] = (d[i-][] + d[i-][] + d[i-][]*)%mod;
d[i][] = (d[i-][] + d[i-][] + d[i-][]*)%mod;
}
scanf("%d",&n);
printf("%lld\n",d[n][]);
}
方法二:推公式
能不能不递推,直接o(1)地算出答案呢?当然可以!
已知0,1,2,3都必须出现一次,那么我们可以枚举0,1出现的次数,或者说占用的位数;
0,1加在一起至少出现占2位,最多占n-2位,假设为i位,则首位为2,还剩n-1位,从n-1位里面挑i位分给0,1,有Cn-1,i种方案,然后0,1内部有i-1种排列方式,2,3内部有
n-i-1种反案,所以最后答案:
然而这种方法要o(n^2)利用杨辉三角预处理组合数,最后时间和第一种方法跑起来差不多。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int mod = ;
int n;
ll c[maxn][maxn];
ll sum;
int main()
{
for(int i = ; i <= ; ++i)
{
c[i][] = ;
for(int j = ; j < i; ++j)
{
c[i][j] = (c[i-][j-] + c[i-][j])%mod;
}
c[i][i] = ;
}
scanf("%d",&n);
for(int i = ; i <= n-; ++i)
{
sum = (sum + c[n-][i]%mod*(i-)*(n-i-))%mod;
}
printf("%lld\n",sum);
}
方法三:矩阵,递推。。。待补充
CCF软考---《有趣的数》的更多相关文章
- CCF CSP 201312-4 有趣的数
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-4 有趣的数 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0 ...
- CCF系列之有趣的数(201312-4)
题目链接: http://115.28.138.223:81/view.page?opid=4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个 ...
- CCF模拟题 有趣的数
有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都 ...
- CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- ccf 201312-04 有趣的数(组合数学)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- CCF 201312-4 有趣的数[dp][难]
问题描述 试题编号: 201312-4 试题名称: 有趣的数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, ...
- 软考类----编码、ASII码等
淘米2014实习生笔试,今年是淘米第一年招暑期实习生,笔试好大部分考的是软考的题目啊啊啊啊(劳资后悔当年没考软考刷加权),其他是浅而泛的风格,C++,SQL语句,数据结构(哈夫曼树,二叉查找树,栈后缀 ...
- 软考计算机网络原理之IP计算问题汇总
转自 http://www.cnblogs.com/jyh317/archive/2013/04/14/3018650.html 1.IP地址 分类: ①A类IP地址 ②B类IP地址 ③C类IP地址 ...
- 软考之PV操作(同步)
这几天,陆续有那么三两个同学跟我讨论了一下关于软考上的PV操作的题,吾虽不才,但还是把同学们讲通了,在此,特分享一下自己的思路和想法,愿对大家有点帮助! 下面,我们就通过自己做过的试卷上两道题来分析: ...
随机推荐
- 解决Qt5.7.0 cannot find -lGL
很久没用Qt了,这次要做一个协议编辑器,在ubuntu 14.04上安装了最新版本的Qt 5.7.0.界面改用扁平化风格,第一感觉还不错.按默认步骤创建了一个gui程序,编译运行,报了一个错:cann ...
- (转)鸟哥SHELL入门材料
http://blog.chinaunix.net/space.php?uid=9809038&do=blog&cuid=62903 经典入门材料! 学习 Shell Scripts ...
- 查看ip地址信息和配置临时ip
查看ip地址信息:ifconfig –a 配置临时ip: ifconfig eth0 192.168.11.107
- 获取WebView加载HTML时网页中的内容
main.xml如下: [html] view plaincopy <RelativeLayout xmlns:android="http://schemas.android.com/ ...
- Android 开发 对话框Dialog dismiss和hide方法的区别
http://ningtukun.blog.163.com/blog/static/186541445201310151539697/ dismiss和hide方法都可以隐藏对话框,在需要的时候也可以 ...
- 七、Solr服务部署和安全
概念: 我们知道,Solr是以webapp的形式运行的,那么我们只需要把Solr.war文件部署到web容器中,便可以运行了,但是因为需要连接数据库做索引并且提供线上的服务调用query接口,那么So ...
- Linux下一些基本操作
一.忘记root密码 1. sudo passwd root 2. 输入新密码. 二.查看内核版本: 1.查看内核版本命令:1) cat /proc/version 2) uname -a 3) u ...
- 惠普 hpacucli工具使用
命令组成 hpacucli [parameter=value] 查看: 查看所有控制器状态 hpacucli ctrl all show 查看slot 0阵列信息详细状态 (可以查看物理磁盘和逻辑磁 ...
- Python顺序与range和random
range([start,] stop[, step]) start是开始,stop是停下,step是步长. >>> range(10) range(0, 10) >>& ...
- 解决操作过快导致ajax异常的办法
//控制点击过快ajax异常 var state = true; function test() { if (state) { state = false; var val = accMul((uCo ...