湖南大学第十四届ACM程序设计新生杯(重现赛)L-The Digits String (矩阵快速幂)
题目链接
题目描述
Consider digits strings with length n, how many different strings have the sum of digits are multiple of 4?
输入描述:
There are several test cases end with EOF. For each test case, there is an integer in one line: n, the length of the digits string. (1≤n≤1,000,000,000).
输出描述:
For each case, output the number of digits strings with length n have the sum of digits are multiple of 4 in one line. The numbers maybe very large, you should output the result modular 2019.
输入
1
2
3
4
输出
3
25
249
479
思路
长度为1有四种情况:
- %4 == 0 有3个
- %4 == 1 有3个
- %4 == 2 有2个
- %4 == 3 有2个
计算长度为N的分为四种情况:
令长度为N-1模4为{0, 1, 2, 3}的数量为T0, T1, T3, T4
- %4 == 0
(%4=0) * T0 + (%4=1) * T3 + (%4=2) * T2 + (%4=3) * T1 - %4 == 1
(%4=0) * T1 + (%4=1) * T0 + (%4=2) * T3 + (%4=3) * T2 - %4 == 2
- (%4=0) * T2 + (%4=1) * T1 + (%4=2) * T0 + (%4=3) * T3
- %4 == 3
(%4=0) * T3 + (%4=1) * T2 + (%4=2) * T1 + (%4=3) * T0
根据这个思路可以用矩阵快速幂加快一下
#include <bits/stdc++.h>
#define LL long long
#define P pair<int, int>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define REP(i, n) for (int i = 1; i <= (n); ++i)
#define rep(i, n) for (int i = 0; i < (n); ++i)
#define N 100005
using namespace std;void mul(LL x[], LL y[]) {LL t[4];t[0] = x[0] * y[0] + x[1] * y[3] + x[3] * y[1] + x[2] * y[2];t[1] = x[1] * y[0] + x[0] * y[1] + x[2] * y[3] + x[3] * y[2];t[2] = x[0] * y[2] + x[2] * y[0] + x[1] * y[1] + x[3] * y[3];t[3] = x[0] * y[3] + x[3] * y[0] + x[1] * y[2] + x[2] * y[1];rep (i, 4) x[i] = t[i] % 2019;
}LL quick(LL x) {LL b[4] = {3, 3, 2, 2};LL a[4] = {3, 3, 2, 2};while (x) {if (x & 1) mul(a, b);mul(b, b);x >>= 1;}return a[0];
}int main() {#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifLL n;while (scanf("%lld", &n) != EOF) {LL ans = quick(n-1);printf("%d\n", ans % 2019);}return 0;
}
湖南大学第十四届ACM程序设计新生杯(重现赛)L-The Digits String (矩阵快速幂)相关推荐
- 湖南大学第十四届ACM程序设计新生杯(重现赛)- FFind the AFei Numbers(数位dp)
题目链接 题目描述 AFei loves numbers. He defines the natural number containing "520" as the AFei n ...
- 湖南大学第十四届ACM程序设计大赛 H Kuangyeye and hamburgers
链接:https://ac.nowcoder.com/acm/contest/338/H 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 怀化学院计算机设计大赛报名系统,怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨2018年湖南省第十四届大学生程序设计大赛选拔赛成功举办...
原标题:怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨2018年湖南省第十四届大学生程序设计大赛选拔赛成功举办 比赛 信息 1 比赛名称:怀化学院六十周年校庆第十一届大学生计算机程序设计竞赛暨 ...
- 十四届蓝桥青少组模拟赛Python-20221108
十四届蓝桥青少组模拟赛Python-20221108 T1.二进制位数 十进制整数2在十进制中是1位数,在二进制中对应10,是2位数. 十进制整数22在十进制中是2位数,在二进制中对应10110,是5 ...
- 南华大学第十五届ACM程序设计竞赛(重现赛) E 免费机票
链接:https://ac.nowcoder.com/acm/contest/699/E 来源:牛客网 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要 ...
- 免费机票【SPFA】【南华大学第十五届ACM程序设计竞赛】
题目链接 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一.小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞 ...
- 南华大学第十五届ACM程序设计竞赛(重现赛)E 免费机票(单边最短路)
题目链接 题目描述 某华大学小飞中奖了!!!奖品是一张免费飞机票,唯一遗憾的是,这张飞机票有限定区间,需要从k个区间中选择其一.小飞打算高高兴兴的出去玩啦,但是,从s地出发,去往e地,可能没有直达的飞 ...
- 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(2)
因为一些事情耽搁了几天,如今总算空出时间续写了.第一篇主要讲运动学分析,接下来讲PID控制与调速. 有关PID的形象描述有很多,最多的就是那个万恶的利用水龙头控制水箱水量,很容易理解,公式也很简单,而 ...
- 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(4)
通过前三篇文章,车子程序的大体框架已经建立起来了.但做车嘛总是会有各种各样的问题. 首当其冲的当然就是信标灯的闪烁问题,按照第三篇文章的思路在看不到灯的时候原地旋转直到看到灯,再按照速度合成将前行速度 ...
最新文章
- springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
- SSH服务--Linux学习笔记
- 安卓原生读写u盘_aigo Type-C固态U盘速度如何?好用吗?
- 换手机的等等!什么时候能用上1000元级5G手机?中国移动公布时间表
- 79. 基于 PHP 的用户认证
- 词云python灿烈,Python jieba分词、词云、文件读取、函数调用、匿名函数
- matlab在二值图像上画曲线_数字图像处理:Image Printing Program Based on Halftoning
- RGBA 图片格式转换 RGB 无损
- windows7安装ffmpeg教程
- Python爬虫入门案例
- WIN10彻底禁用UAC(用户账户控制)
- 微博热搜数据变化趋势视频化展示
- 工作多少年,在哪个行业,可以拿到年薪50万+
- 使用uniapp编写词霸每日一句页面
- docker service
- html 做填写的表格,CSS写的简单表格示例
- 如何合理运用美容院资源
- 读取图片文件到剪贴板时的html格式
- 如何搭建SPA-单页面应用
- 第2章 基础设施即服务(IaaS)-2-Docker
热门文章
- NYOJ--517--最小公倍数(大数打表)
- IIS发布站点错误收集(持续更新)
- android adt 最新下载地址
- Java 并发专题 :FutureTask 实现预加载数据 在线看电子书、浏览器浏览网页等
- C#一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第100位数是多少, 用递归算法实现。...
- SQL中条件和比较关键字Case的使用方法(case的结果就是得到了一个值)
- weblogic常见漏洞
- php写新闻浏览历史,PHP实现浏览历史记录
- 热部署在java中的包名_09-springboot工程中的热部署实现。
- C# 系统应用之获取Windows最近使用记录