「Codeforces 468C」Hack it!
Description
定义 \(f(x)\) 表示 \(x\) 的各个数位之和。现在要求 \(\sum_{i=l}^rf(i)\bmod a\)。
显然 ans=solve(l,r)%a; if(ans<=0) ans+=a;
会在 \(\sum_{i=l}^rf(i)\equiv 0\pmod a\) 时输出错误。给定 \(a\),请你构造一个 Hack 数据。
\(1\leq a\leq 10^{18}\),构造出的 \(l,r\) 需满足 \(1\leq l\leq r\leq 10^{200}\),同时 \(\sum_{i=l}^rf(i)\bmod a=0\)。
Solution
定义 \(g(x)=\sum_{i=1}^xf(i)\),则 \(\sum_{i=l}^rf(i)=g(r)-g(l-1)\)。
首先可以发现,对于 \(1\leq x<10^{18}\),有:
\(\displaystyle f(x+10^{18})-f(x)=1\)
也就是说,当 \([l,r]\) 从 \([x+1,x+10^{18}]\) 变成 \([x+2,x+10^{18}+1]\) 时(整体增大 \(1\)),由于 \(f(x+10^{18}+1)-f(x+1)=1\),因此结果会增加 \(1\)。
那么,当 \([l,r]\) 从 \([1,10^{18}]\) 变成 \([x+1,x+10^{18}]\) 时(整体增大 \(x\)),结果会增加 \(x\)。即:
\(\displaystyle \sum_{i=k+1}^{k+10^{18}}\equiv g(10^{18})+k\pmod a\)
若 \(g(10^{18})\equiv x\pmod a\),取 \(k=a-x\),那么:
\(\displaystyle \sum_{i=a-x+1}^{a-x+10^{18}}\equiv 0\pmod a\)
则可取 \([l,r]\) 为 \([a-x+1,a-x+10^{18}]\)。考虑如何求出 \(x\)。
不难发现,\(g(10^x)=45\times x\times 10^{x-1}+1\)。所以 \(g(10^{18})=45\times 18\times 10^{17}+1\)。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int a,x;
signed main(){
scanf("%lld",&a),x=1ull*((int)1e17%a*45%a*18%a+1)%a;
printf("%lld %lld\n",a-x+1,a-x+(int)1e18);
return 0;
}
「Codeforces 468C」Hack it!的更多相关文章
- 「CodeForces 476A」Dreamoon and Stairs
Dreamoon and Stairs 题意翻译 题面 DM小朋友想要上一个有 \(n\) 级台阶的楼梯.他每一步可以上 \(1\) 或 \(2\) 级台阶.假设他走上这个台阶一共用了 \(x\) 步 ...
- 「CodeForces 581D」Three Logos
BUPT 2017 Summer Training (for 16) #3A 题意 给你三个矩形,需要不重叠不留空地组成一个正方形.不存在输出-1,否则输出边长和这个正方形(A,B,C表示三个不同矩形 ...
- 「CodeForces - 50C 」Happy Farm 5 (几何)
BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...
- 「CodeForces - 598B」Queries on a String
BUPT 2017 summer training (for 16) #1I 题意 字符串s(1 ≤ |s| ≤ 10 000),有m(1 ≤ m ≤ 300)次操作,每次给l,r,k,代表将r位置插 ...
- 「CodeForces - 717E」Paint it really, really dark gray (dfs)
BUPT 2017 summer training (for 16) #1H 题意 每个节点是黑色or白色,经过一个节点就会改变它的颜色,一开始在1节点.求一条路径使得所有点变成黑色. 题解 dfs时 ...
- 「CodeForces 546B」Soldier and Badges 解题报告
CF546B Soldier and Badges 题意翻译 给 n 个数,每次操作可以将一个数 +1,要使这 n 个数都不相同, 求最少要加多少? \(1 \le n \le 3000\) 感谢@凉 ...
- 「Codeforces 79D」Password
Description 有一个 01 序列 \(a_1,a_2,\cdots,a_n\),初始时全为 \(0\). 给定 \(m\) 个长度,分别为 \(l_1\sim l_m\). 每次可以选择一个 ...
- 「Codeforces 724F」Uniformly Branched Trees
题目大意 如果两棵树可以通过重标号后变为完全相同,那么它们就是同构的. 将中间节点定义为度数大于 \(1\) 的节点.计算由 \(n\) 个节点,其中所有的中间节点度数都为 \(d\) 的互不同构的树 ...
- 「codeforces - 1284G」Seollal
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...
随机推荐
- LeetCode子矩形查询
LeetCode 子矩形查询 题目描述 请你实现一个类SubrectangleQueries,它的构造函数的参数是一个rows * cols的矩形(这里用整数矩阵表示),并支持以下两种操作: upda ...
- 日常Java 2021/9/20
Java随机数 运用Java的random函数实现猜数字游戏 随机产生一个1-50之间的数字,然后让玩家猜数,猜大猜小都给出提示,猜对后游戏停止 package pingchangceshi; imp ...
- C++ 德才论
输入样例: 14 60 80 10000001 64 90 10000002 90 60 10000011 85 80 10000003 85 80 10000004 80 85 10000005 8 ...
- oracle 根据ids转names
WITH t AS (SELECT '1,2,3,4' a, 1 b FROM Dual UNION ALL SELECT '1,2,3' a, 2 b FROM Dual),p AS ( ...
- jenkins之授权和权限管理
#:创建角色,给角色授权,然后创建用户,将用户加入到角色(前提先安装插件) #:先将之前的卸载掉 #:然后重启服务,在可选插件搜索Role #:装完重启服务 root@ubuntu:~# system ...
- 应用springMVC时如果配置URL映射时如下配置
应用springMVC时如果配置URL映射时如下配置 [html] view plaincopy<servlet> <servlet-name>appServlet</s ...
- NSURLSession下载文件-代理
- 3.1 涉及知识点(1)创建NSURLSession对象,设置代理(默认配置) ```objc //1.创建NSURLSession,并设置代理 /* 第一个参数:session对象的全局配置设置 ...
- win10安装两台mysql-5.7.31实例
1. 下载 mysql5.7.31 压缩包: (1)百度云下载: 链接:https://pan.baidu.com/s/1jgxfvIYzg8B8ahxU9pF6lg 提取码:fiid (2)官网下载 ...
- springmvc中文件跨服务器传输的方法
//1.首先在tomcat的新端口上重新开启一个tomcat服务器fileuploadserver服务器,并且在webapps下新建一个uploads文件夹 //2.在业务服务器上书写前端页面和后端的 ...
- 【Word】自动化参考文献-交叉引用
第一步:设置参考文献标号 开始-定义新编号格式中,定义参考文献式的方框编号: 这里注意不要把他原来的数字去掉 第二步:选择交叉引用 插入-交叉引用: 第三步:更新标号 如果更新标号,使用右键-更新域. ...