news 2026/5/1 6:27:06

《P4910 帕秋莉的手环》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P4910 帕秋莉的手环》

题目背景

帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里。不仅擅长许多魔法,还每天都会开发出新的魔法。只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦。

她所用的属性魔法,主要是生命和觉醒的“木”,变化和活动的“火”,基础和不动的“土”,果实和丰收的“金”,寂静和净化的“水”,机动和攻击的“日”,被动和防御的“月”七种属性

没有窗户的图书馆或许充满了灰尘,不过她认为在书旁边才是自己,所以她不能从书的旁边离开。这样已经一百年了。

题目描述

经过数年魔法的沉淀,帕秋莉将她那浩瀚无边的魔法的一部分浓缩到了一些特质的珠子中。

由于帕秋莉爱好和平,她只把象征生命和觉醒的木属性魔法和果实和丰收的金属性魔法放入了珠子中。

她认为光要这些珠子没有什么用处,于是她想将这些珠子串成魔法手环,这样就好看多了。于是,她拿出来用来串这些珠子的线 - 雾雨灵径。

她将这些珠子串到一起之后发现了一些性质:只要相邻珠子间的两个珠子中有一个是金属性的,那么它们之间的雾雨灵径的颜色就为金色。

帕秋莉想要一个全都是金色的手环,而且她还想知道一共有多少种方案。由于她还要研究新的魔法,她就把这件事交给了你。由于她的魔法浩瀚无边,她有无穷的珠子。

她并不想看着好几十位的数字,于是你需要对 1000000007 进行取模。

输入格式

输入包含多组数据。

第一行一个正整数 T ,表示数据组数。

之后每组数据有一个 n 代表木属性珠子和金属性珠子的总个数。

输出格式

对于每组数据,输出取模后的方案数。

输入输出样例

输入 #1复制

2 5 20

输出 #1复制

11 15127

输入 #2复制

3 9 99 999

输出 #2复制

76 281781445 445494875

输入 #3复制

5 123 1234 12345 123456 1234567

输出 #3复制

528790589 200102666 537707871 262341000 534036342

说明/提示

这里给出 n=5 时,样例的解释:

使用 1,2,3,4,5 来代表各个珠子。

可行的方案是(其中的数字代表染成金元素的珠子序号):

{1,3,5},{1,2,4},{1,3,4},{2,3,5},{2,4,5}

{1,2,3,4},{1,2,3,5},{1,2,4,5},{1,3,4,5},{2,3,4,5}

{1,2,3,4,5}

对于 20% 的数据,有 1≤n≤10 ;

对于 40% 的数据,有 1≤n≤102 ;

对于 60% 的数据,有 1≤n≤106 ;

对于 90% 的数据,有 1≤n≤109 ;

对于全部的数据,有 1≤T≤10,1≤n≤1018。

代码实现:

#include<iostream> #include<cstdio> #include<cstdlib> #include<map> #define LL long long #define re register #define res mp[l][r][len] using namespace std; const int mod=1000000007; int T; LL n, f[70][2][2], pow2[70]; map<LL,LL> mp[2][2]; LL dfs(LL len, int l, int r, int x){ if(mp[l][r][len]) return mp[l][r][len]; for(re int i=x;~i;--i){ if(pow2[i]==len) return f[i][l][r]; if(pow2[i]<len){ LL a=dfs(len-pow2[i],0,r,i-1), b=dfs(len-pow2[i],1,r,i-1); res=(res+(f[i][l][0]*b)%mod)%mod; res=(res+(f[i][l][1]*a)%mod)%mod; res=(res+(f[i][l][1]*b)%mod)%mod; return res; } } return 0; } int main(){ scanf("%d",&T); f[0][0][0]=f[0][1][1]=pow2[0]=1ll; for(re int i=1;i<=62;++i){ pow2[i]=pow2[i-1]*2; for(re int j=0;j<=1;++j){ for(re int k=0;k<=1;++k){ f[i][j][k]=(f[i][j][k]+(f[i-1][j][0]*f[i-1][1][k])%mod)%mod; f[i][j][k]=(f[i][j][k]+(f[i-1][j][1]*f[i-1][0][k])%mod)%mod; f[i][j][k]=(f[i][j][k]+(f[i-1][j][1]*f[i-1][1][k])%mod)%mod; } } } for(re int i=1;i<=T;++i){ scanf("%lld",&n); printf("%lld\n",(dfs(n+1,0,0,62)+dfs(n+1,1,1,62))%mod); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 11:21:19

【MyCat】第1章 ----入门概述

文章目录 第一章:入门介绍2、为什么要用Mycat&#xff1f;1、读写分离2、数据分片3、多数据源整合 3 、原理 第一章:入门介绍 Mycat 是数据库中间件。 1、数据库中间件 中间件&#xff1a;是一类连接软件组件和应用的计算机软件&#xff0c;以便于软件各部件之间的沟通。 例子…

作者头像 李华
网站建设 2026/4/23 9:54:59

国内外受欢迎的CG网站与云渲染平台推荐

在数字艺术创作的世界里&#xff0c;CG技术和渲染平台在影视、动画、游戏等领域扮演着至关重要的角色。随着创作需求的不断增长&#xff0c;越来越多的CG艺术家和设计师依赖先进的云渲染平台来提高工作效率和作品质量。今天&#xff0c;我们就来探讨一下国内外一些知名且受欢迎…

作者头像 李华
网站建设 2026/4/26 3:11:30

计算机Java毕设实战-基于springboot的机器人家电健康预警系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/28 23:43:44

国产CAD这笔软件授权费,省得有点心疼

开厂子的&#xff0c;每天都在算账。原材料在涨价&#xff0c;人工工资在涨&#xff0c;连以前用的那套国外工业软件&#xff0c;每年的维护费和授权费也是一笔不小的开支。那软件功能是强大&#xff0c;但对于我们主要做中低端汽配件的来说&#xff0c;大部分功能根本用不上&a…

作者头像 李华