热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【bzoj4002】[JLOI2015]有意义的字符串数论+矩阵乘法

题目描述B君有两个好朋友,他们叫宁宁和冉冉。有一天,冉冉遇到了一个有趣的题目:输入b;d;n,求输入一行三个整数b;d;n输出一行一个数表示模7528443412579

题目描述

B 君有两个好朋友,他们叫宁宁和冉冉。有一天,冉冉遇到了一个有趣的题目:输入 b;d;n,求

那么an一定恒为整数。

将n=1代入,可知两个±号一定相同,于是只有2种情况

再由通项公式求递推公式,发现只有一种情况符合条件,即:

,通项公式为

根据题目条件b mod 2=1,d mod 4=1可知前面的系数都为整数,于是可以矩阵乘法来推。

推完之后再讨论后一项的影响即可。

ps: n可能等于0,所以需要特判或者从a0开始推。

ps2: 题目中mod较大,需要用到unsigned long long和快速乘

#include 
#include 
#include 
#define mod 7528443412579576937ull
using namespace std;
typedef unsigned long long ull;
ull qmul(ull x , ull y)
{
    ull ans = 0;
    while(y)
    {
        if(y & 1) ans = (ans + x) % mod;
        x = (x + x) % mod;
        y >>= 1;
    }
    return ans;
}
struct matrix
{
    int n , m;
    ull num[2][2];
    matrix()
    {
        n = m = 0 , memset(num , 0 , sizeof(num));
    }
    matrix operator*(matrix a)
    {
        matrix t;
        t.n = n , t.m = a.m;
        int i , j , k;
        for(i = 0 ; i >= 1;
    }
    return t;
}
int main()
{
    ull b , d , n , x , y , ans;
    scanf("%llu%llu%llu" , &b , &d , &n);
    x = b , y = (d - b * b) / 4;
    A.n = 1 , A.m = 2 , A.num[0][0] = 2 , A.num[0][1] = b;
    B.n = 2 , B.m = 2 , B.num[0][1] = y , B.num[1][0] = 1 , B.num[1][1] = x;
    ans = (A * qpow(B , n)).num[0][0];
    if(y && n % 2 == 0) ans = (ans + mod - 1) % mod;
    printf("%llu\n" , ans);
    return 0;
}

推荐阅读
  • 本文详细探讨了能力模型(Competency Model)的概念及其在人力资源管理中的应用,涵盖职位体系设计、薪酬激励策略及绩效管理等方面。通过深入分析冰山模型的核心构成,以及不同类型人才的关键素质,旨在为企业提供科学的人才管理和发展的指导。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 如何在PPT中创建交互式跳转按钮
    许多企业在日常工作中都会用到PPT,但你知道如何在PPT中制作一个可以实现页面跳转的按钮吗?本文将详细介绍在PPT中创建跳转按钮的方法和步骤。 ... [详细]
  • 本文对元代诗人萨都剌的《酹江月·姑苏台怀古》进行了详尽的翻译和赏析,深入探讨了诗中蕴含的历史情感与文化内涵。 ... [详细]
  • 一文详解Linux
    Linuxnetfilter与VRF实验环境如下图所示:配置如下:#!binbashsudoipnetnsaddns1sudoiplinkaddns1veth1typevethpe ... [详细]
  • 网络分析仪中的噪声参数解析
    本文探讨了网络分析仪中噪声参数的作用及其对测量精度的影响。通过深入分析噪声参数如何随源阻抗变化,解释了其在不同测量条件下的表现。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 3DSMAX制作超现实的体育馆模型
    这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 如何辨别华为手机的不同屏幕分辨率?
    了解华为手机屏幕分辨率的区别及其识别方法对于提升用户体验至关重要。本文将详细介绍如何通过手机设置中的显示选项来查看和区分不同型号华为手机的屏幕分辨率。 ... [详细]
  • 本文详细介绍了使用MAX7219芯片驱动单个8x8 LED点阵的仿真过程。MAX7219作为一款高效的LED显示驱动器,广泛应用于各种工业控制面板、商业广告牌及DIY项目中,能够显著提升显示效果。 ... [详细]
  • Unity美洲技术总监Carl Callewaert探讨游戏引擎与动作捕捉技术
    Carl Callewaert,现任Unity美洲区技术总监,以其幽默和专业著称,拥有超过十年的游戏开发及教育经验。在UNITE 2016 Shanghai会议中,他不仅展示了Unity引擎的先进特性和最新研究进展,还以其独特的即兴说唱技能给观众留下了深刻印象。 ... [详细]
  • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
  • 本文对唐代诗人元稹的《月三十韵》进行了详尽的翻译与赏析,深入探讨了诗中的意境与艺术特色。 ... [详细]
author-avatar
贪婪黑夜面_780
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有