csp 201312-4有趣的数

2023-05-16

题意:

问题描述  
我们把一个数称为有趣的,当且仅当:

1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次。

2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前。

3. 最高位数字不为0。

因此,符合我们定义的最小的有趣的数是2013。除此以外,4位的有趣的数还有两个:2031和2301。

请计算恰好有n位的有趣的数的个数。由于答案可能非常大,只需要输出答案除以1000000007的余数。
  
输入格式  
输入只有一行,包括恰好一个正整数n (4 ≤ n ≤ 1000)。
输出格式
输出只有一行,包括恰好n 位的整数中有趣的数的个数除以1000000007的余数。样例输入4样例输出3


思路:

由于数的特殊性,0必须在1之前,2必须在3之前,最高位不能为0,很容易推断出最高位应该是2,接着我们可以从1和3这两个特殊的数字入手,我们可以枚举第一次出现1的位置和第一次出现3的位置,可以分为两类,先出现1和先出现3,这两种的所有情况一定不会重合,接着再对这些位置之前的数按照可能性进行判断即可,即

在这里插入图片描述
方框里的是可能出现的数,这样问题就分解成了找出每个方框里的可能情况然后再通过计算即可,因为每个方框里只有两个数的可能,于是问题变成了在k个位置上,两个数字的排列,答案很明显是2的k次方,但是数据可能过大,要模上题解给的数,于是我用了设计了一个函数求解,可以不超范围。

最后要注意按照上述方法的求解,2,3,1都会出现,只有0可能会不出现,所以要注意舍去0不出现的情况。


代码:

#include<iostream>
#include<string>
#include<string.h>
#include<stdio.h> 
using namespace std;

const long long mo = 1000000007;

long long much[1005];
long long ans = 0;

void getmuch()
{
	much[0] = 1;
	much[1] = 2;
	for(int i = 2;i<=1000;i++)
	{
		much[i] = (much[i-1]*2)%mo;
	}
}

int main()
{
	getmuch();
	int n;
	cin>>n;
	
	//先1后3
	for(int i = 3;i<n;i++)
		for(int j = i+1;j<=n;j++)
		{
			int x = i-1-1;
			int y = j-i-1;
			int z = n-j;
			ans = (ans + ((((much[x] - 1)*much[y])%mo)*much[z])%mo)%mo;	
		} 
	
	//先3后1
	for(int i = 2;i<n;i++)
		for(int j = i+1;j<=n;j++)
		{
			int x = i-1-1;
			int y = j-i-1;
			int z = n-j;
			ans = (ans + (((much[x]*much[y] - 1)%mo)*much[z])%mo)%mo;			
		} 
	
	cout<<ans;
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

csp 201312-4有趣的数 的相关文章

  • 结构体数组操作+文件读写

    一 1 声明了该结构体就声明了结构体内所有成员 include lt stdio h gt typedef struct stuInfo char name int age int num Student int main int argc

随机推荐

  • CEF中JavaScript与C++交互

    在CEF里 xff0c JS和Native xff08 C C 43 43 xff09 代码可以很方便的交互 xff0c 这里https bitbucket org chromiumembedded cef wiki JavaScriptI
  • 阿里云网盘内测网址

    阿里云Teambition网盘内测申请地址 这个网盘还没有开放 xff0c 想要体验的话可以申请 xff0c 通过后 xff0c 获得体验资格 网址 xff1a https form teambition net f CjQetM x fi
  • Python 创建安装包

    Version usr bin env python3 coding utf 8 64 Author forward huan 64 Time 2022 07 14 23 05 64 Description import json impo
  • IOS UITableViewCell高度自适应的那些事

    好啦 xff0c 这是一个老生常谈的问题 真的 xff0c 有时候把人气得想去搞安卓 xff0c 安卓就没得这码子事 xff5e 方案有很多 xff0c 我这里提供三种方案 其实每种自适应高度的方法都有比较适合自己的情景 xff0c 比如c
  • Sublime Text 最新注册码

    Sublime Text 最新注册码 Sublime 更新后 xff0c 很多验证码都失效了 收集了一些在 2017 09 14 测试有效的注册码 xff0c 适用于 xff1a Sublime Text 2 3 xff0c Build 2
  • 群晖NAS变成TimeMachine时间机器完成Mac备份

    如果有一台群晖Nas xff0c 那么我们可以很方便的利用他完成Mac系统的自动备份 我的群晖在路由器后面 xff0c 所以当我不再家的时候备份 xff0c 则需要使用vpn连接到群晖 接下来让我们实践出真知吧 1 在群晖nas中设置一个同
  • 如何生成ssh key,以及repo init 遇到的无法检查签名:找不到公钥 问题

    repo init 遇到 无法检查签名 找不到公钥 的问题 源文章 xff1a http blog csdn net njuitjf article details 38386941 方法一 xff1a 出现此问题是repo版本不对的问题
  • 选数问题 Gym - 270437C

    题意 xff1a 给定n个正整数 xff0c 从中选取K个数 xff0c 保证这K个数的和是S 求有多少种选择的方法 Input 第一行输入一个整数T T lt 61 100 xff0c 表示有T个测试样例 对于每个例子 xff0c 有两行
  • 掌握魔法的东东II Gym - 101510B

    题意 xff1a 从瑞神家打牌回来后 xff0c 东东痛定思痛 xff0c 决定苦练牌技 xff0c 终成赌神 xff01 东东有 A B 张扑克牌 每张扑克牌有一个大小 整数 xff0c 记为a xff0c 范围区间是 0 到 A 1 x
  • 传递闭包 Floyd算法

    题意 xff1a 众所周知 xff0c TT 有一只魔法猫 这一天 xff0c TT 正在专心致志地玩 猫和老鼠 游戏 xff0c 然而比赛还没开始 xff0c 聪明的魔法猫便告诉了 TT 比赛的最终结果 TT 非常诧异 xff0c 不仅诧
  • csp m2 咕咕东的奇妙序列 二分

    题意 xff1a 题目描述 咕咕东 正在上可怕的复变函数 xff0c 但对于稳拿A Plus的 咕咕东 来说 xff0c 她早已不再听课 xff0c 此时她在睡梦中 突然想到了一个奇怪的无限序列 xff1a 112123123412345
  • A - 咕咕东的目录管理器

    题意 xff1a 样例输入 xff1a span class token number 1 span span class token number 22 span MKDIR dira CD dirb CD dira MKDIR a MK
  • ssh密钥对

    SSH密钥 1 生成ssh密钥对 不要私钥密码 连续回车 win git ssh keygen t rsa b 4096 C 34 yourname or youremail 34 34 qs 64 Dell MINGW64 span cl
  • C - 公园坐椅子

    题意 xff1a SDUQD 旁边的滨海公园有 x 条长凳 第 i 个长凳上坐着 a i 个人 这时候又有 y 个人将来到公园 xff0c 他们将选择坐在某些公园中的长凳上 xff0c 那么当这 y 个人坐下后 xff0c 记k 61 所有
  • week12 hw 必做题1,2

    题意 xff1a 给出n个数 xff0c zjm想找出出现至少 n 43 1 2次的数 xff0c 现在需要你帮忙找出这个数是多少 xff1f Input 本题包含多组数据 xff1a 每组数据包含两行 第一行一个数字N 1 lt 61 N
  • week13 hw必做1,2

    题意 xff1a 这一天 xff0c TT 遇到了一个神秘人 神秘人给了两个数字 xff0c 分别表示 n 和 k xff0c 并要求 TT 给出 k 个奇偶性相同的正整数 xff0c 使得其和等于 n 例如 n 61 10 xff0c k
  • week14限时模拟 猫睡觉问题 HDU - 3700

    题意 xff1a 众所周知 xff0c TT家里有一只魔法喵 这只喵十分嗜睡 一睡就没有白天黑夜 喵喵一天可以睡多次 xff01 xff01 每次想睡多久就睡多久 喵睡觉的时段是连续的 xff0c 即一旦喵喵开始睡觉了 xff0c 就不能被
  • CSP M4 C 宇宙狗的危机

    题意 xff1a 描述 在瑞神大战宇宙射线中我们了解到了宇宙狗的厉害之处 xff0c 虽然宇宙狗凶神恶煞 xff0c 但是宇宙狗有一个很可爱的女朋友 最近 xff0c 他的女朋友得到了一些数 xff0c 同时 xff0c 她还很喜欢树 xf
  • csp 201809-3 元素选择器

    题意 xff1a 思路 xff1a 这道题的解决应该分为建树 43 查找两部分 关于建树 xff0c 为了方便后代选择器的查找 xff0c 采用儿子记录父节点的方法 xff0c 即每个节点记录自己的父节点位置 采用数组描述这棵树 xff0c
  • csp 201312-4有趣的数

    题意 xff1a 问题描述 我们把一个数称为有趣的 xff0c 当且仅当 xff1a 1 它的数字只包含0 1 2 3 xff0c 且这四个数字都出现过至少一次 2 所有的0都出现在所有的1之前 xff0c 而所有的2都出现在所有的3之前