CF897B Chtholly's request 题解
Content
我们将长度为偶数的回文数称作 zcy 数,比如 \(11,1221\) 是 zcy 数,而 \(34,121\) 不是。假设第 \(i\) 个 zcy 数为 \(a_i\),求 \(\sum\limits_{i=1}^na_i\)(前 \(n\) 个 zcy 数的和)模 \(p\) 后的结果。
数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant p\leqslant 10^9\)。
Solution
在写题解之前做一个提醒:这篇题解里的代码用 C++11 及以下的语言提交会出现 WA 的情况,需要用 C++14 及以上的语言提交。 有可能是因为 C++14 及以上的语言里面的语句和 C++14 以下的语言的对应语句的效果不同。
以下是正文:
由于无论什么数乘以 \(2\) 都是偶数,所以我们很容易发现,第 \(i\) 个 zcy 数,即第 \(i\) 个长度为偶数的回文数,其实就相当于将 \(i\) 和 \(i\) 反转过后的数拼接在一起得到的数,所以,我们考虑直接暴力求出 \(i\) 翻转后得到的数 \(i'\),然后设数字 \(x\) 的长度为 \(L_x\),那么第 \(i\) 个 zcy 数就可以这样表示:\(10^{L_x}\times i+i'\),然后直接暴力加,边加边取模即可。
如果您去 CF 官网上看这道题目的标签的话,你会发现里面有个“暴力”的标签,所以这道题目总的来说就是一点:暴力。
Code
ll ans;
int n, m;
ll digitnum(ll x) {
ll p = x, ans = 0;
while(p) {
ans++;
p /= 10;
}
return ans;
}
ll turn(ll x) {
ll p = x, ans = 0, digit[27] = {0};
while(p) {
digit[++digit[0]] = p % 10;
p /= 10;
}
_forll(i, 1, digit[0]) ans += digit[i] * (ll)pow(10, digit[0] - i);
return ans;
}
int main() {
//This program is written in Windows 10 by Eason_AC
getint(n), getint(m);
_for(i, 1, n) {
int len = digitnum(i), rev = turn(i);
ll tmp = ((ll)pow(10, len) * i + rev) % m;
ans = (ans + tmp % m) % m;
}
writell(ans);
return 0;
}
CF897B Chtholly's request 题解的更多相关文章
- codeforces 897B Chtholly's request 偶数长度回文数
codeforces 897B Chtholly's request 题目链接: http://codeforces.com/problemset/problem/897/B 思路: 暴力求出这100 ...
- Codeforces Round #449 (Div. 2) B. Chtholly's request【偶数位回文数】
B. Chtholly's request time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #449 (Div. 2)-897A.Scarborough Fair(字符替换水题) 897B.Chtholly's request(处理前一半) 897C.Nephren gives a riddle(递归)
A. Scarborough Fair time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- 897B. Chtholly's request#长度为偶数的回文数(模拟)
题目出处:http://codeforces.com/problemset/problem/897/B 题目大意:构造一个题意要求的zcy数之后取模 #include<iostream> ...
- Codeforces 897 B.Chtholly's request-思维题(处理前一半)
B. Chtholly's request time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- Codeforces Round #449 (Div. 2)ABCD
又掉分了0 0. A. Scarborough Fair time limit per test 2 seconds memory limit per test 256 megabytes input ...
- 【bzoj1146】[CTSC2008]网络管理Network 倍增LCA+dfs序+树状数组+主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条高 ...
- Codeforces Round #449 Div. 2 A B C (暂时)
A. Scarborough Fair 题意 对给定的长度为\(n\)的字符串进行\(m\)次操作,每次将一段区间内的某一个字符替换成另一个字符. 思路 直接模拟 Code #include < ...
- 【BZOJ1146】[CTSC2008]网络管理Network 树状数组+DFS序+主席树
[BZOJ1146][CTSC2008]网络管理Network Description M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个部门之间协同工 ...
随机推荐
- 第一章 初始C语言
第一章 初始C语言 目录 第一章 初始C语言 1. C语言起源 2. 选择C语言的理由 2.1 设计特性 2.2 高效性 2.3 可移植性 2.4 强大而灵活 2.5 面向程序员 3. C语言的应用范 ...
- 洛谷 P3600 - 随机数生成器(期望 dp)
题面传送门 我竟然独立搞出了这道黑题!incredible! u1s1 这题是我做题时间跨度最大的题之一-- 首先讲下我四个月前想出来的 \(n^2\log n\) 的做法吧. 记 \(f(a)=\m ...
- 【R】如何将重复行转化为多列(一对一转化一对多)?
目录 需求 方法一 方法二 需求 一个数据框一列或多列中有重复行,如何将它的重复行转化为多列?即本来两列一对一的关系,如何转化为一对多的关系?普通的spread函数实现较为麻烦. 示例数据如下: It ...
- Anaconda3-更换为清华源后依旧报错CondaHTTPError: HTTP 000 CONNECTION FAILED
前言 今天发现换完清华源以后依旧报错 CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsi.. ...
- R语言中的read.table()
参考资料:http://www.cnblogs.com/xianghang123/archive/2012/06/06/2538274.html read.table(file, header = F ...
- shell 除法和格式化输出printf
相关知识的补充: printf命令模仿C程序库里的printf()程序.printf由POSIX标准所定义,因此使用printf的脚本比使用echo有着更好的移植性. printf使用引用文本或者空格 ...
- goto 的用法
#include <stdio.h> int main() { printf("go to cpy \n"); goto FLASH_CPY; printf(" ...
- Spark(十六)【SparkStreaming基本使用】
目录 一. SparkStreaming简介 1. 相关术语 2. SparkStreaming概念 3. SparkStreaming架构 4. 背压机制 二. Dstream入门 1. WordC ...
- 大数据学习day11------hbase_day01----1. zk的监控机制,2动态感知服务上下线案例 3.HDFS-HA的高可用基本的工作原理 4. HDFS-HA的配置详解 5. HBASE(简介,安装,shell客户端,java客户端)
1. ZK的监控机制 1.1 监听数据的变化 (1)监听一次 public class ChangeDataWacher { public static void main(String[] arg ...
- Linux信号1
信号(signal)是一种软中断,他提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式.在Linux系统中,根据POSIX标准扩展以后的信号机制,不仅可以用来通知某进程发生了什么事件,还可以给 ...