洛谷3962 [TJOI2013]数字根
题目描述
一个数字的数字根定义为:这个数字每一位的数字加起来求和,反复这个过程直到和小于10。例如,64357的数字跟为7,因为6+4+3+5+7=25,2+5=7个区间的数字根定义为这个区间所有数字和的数字根。
给定一个序列A1,A2,A3,…,An,你需要回答一些询问。每一个询问给定个区间[L,R],求出这个区间所有连续子区间里最大的前5个不同的数字根,不够5个的用-1补全
输入输出格式
输入格式:
第一行一个整数N,表示序列的长度。第二行是N个整数Ai(0≤Ai<10^9)。第三行是一个整数Q表示询问次数。接下来Q行,每一行两个正整数1,r,表示询问区间。(1≤l≤r≤N)
输出格式:
Q行,表示每一个查询区间所有连续子区间里最大的前5个不同的数字根,按降序输出,输出用空格隔开。
输入输出样例
101 240 331 4 52
3
1 3
4 5
1 5
8 7 6 4 2
7 4 2 -1 -1
9 8 7 6 4
说明
样例解释
第一个查询区间[1,3],它的连续子区间有[1,1],[2,2],[3,3],[1,2],[2,3],[1,3].可对应的数字根分别为2,6,7,8,4,6。所以最大的5个是8,7,6,4,2。
数据范围
30%的数据,N ≤ 1000; Q ≤ 1000
100%的数据,N ≤ 100000; Q ≤ 100000
解法
感觉懂了数字根是什么就会做这个题了。(我去征求VANE的意见时,发现他也不懂数字根,他和我说要记忆化搜索……)
(虽然我也不懂,问了百度。)
结论就是 数字根=各位加在一起%9 (如果是0就=9)
现在有了思路,以后有了证明再补吧。
于是就预处理前缀和,暴力枚举[L,R]内的子区间,因为答案只有0~9,而且只要求你输出前5个,当你已经找到5,6,7,8,9时就可以退出了,
所以这么暴力的做法是超不了时的
#include<bits/stdc++.h>
#define MAXN 100005
using namespace std;
int read(){
int x=;char c=getchar();
while(c<''||c>'')c=getchar();
while(c>=''&&c<=''){x+=c-'';c=getchar();}
return x;
}
int N,Q,l,r,a[MAXN],s[MAXN];
bool b[];
void query(){
memset(b,,sizeof b);
int k=;
l=read(),r=read();
for(int i=l;i<=r;i++)
for(int j=i;j<=r;j++){
int tmp=(s[j]-s[i-])%;
tmp?b[tmp]=:b[]=;
if(b[]&&b[]&&b[]&&b[]&&b[]){
printf("9 8 7 6 5 \n");
return ;
}
}
for(int i=;i>=;i--)
if(k&&b[i])printf("%d ",i),k--;
for(int i=;i<=k;i++)printf("-1 ");
printf("\n");
}
int main()
{
N=read();
for(int i=;i<=N;i++)
a[i]=read(),s[i]=s[i-]+a[i];
Q=read();
while(Q--)query();
return ;
}
洛谷3962 [TJOI2013]数字根的更多相关文章
- 洛谷 P3962 [TJOI2013]数字根 解题报告
P3962 [TJOI2013]数字根 题意 数字根:这个数字每一位的数字加起来求和,反复这个过程直到和小于10. 给出序列\(a\),询问区间\([l,r]\)连续的子区间里最大前5个不同的数字根, ...
- 洛谷P1102 A-B数对
洛谷P1102 A-B数对 https://www.luogu.org/problem/show?pid=1102 题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A ...
- 洛谷P1288 取数游戏II(博弈)
洛谷P1288 取数游戏II 先手必胜的条件需要满足如下中至少 \(1\) 条: 从初始位置向左走到第一个 \(0\) 的位置,经过边的数目为偶数(包含 \(0\) 这条边). 从初始位置向右走到第一 ...
- TJOI2013数字根
题面链接 洛谷 sol 我们先不考虑\(0\),发现数字根\(=\)它\(mod 9\). 我们前缀和一波,把区间和变成两数相减. 对于每个\(v\in\{0-8\}\),(这里面的\(mod 9=0 ...
- 洛谷 P1392 取数
题面 在做这道题前,先要会他的弱化版(实际一模一样,只是愚蠢的洛谷评测级别差了一档(睿智如姬无夜)) ----------------------------------弱化版------------ ...
- 洛谷——P2421 A-B数对(增强版)
题目背景 woshiren在洛谷刷题,感觉第一题:求两数的和(A+B Problem)太无聊了,于是增加了一题:A-B Problem,难倒了一群小朋友,哈哈. 题目描述 给出N 个从小到大排好序的整 ...
- 洛谷 P5206 - [WC2019]数树(集合反演+NTT)
洛谷题面传送门 神仙多项式+组合数学题,不过还是被我自己想出来了( 首先对于两棵树 \(E_1,E_2\) 而言,为它们填上 \(1\sim y\) 使其合法的方案数显然是 \(y\) 的 \(E_1 ...
- Luogu P3962 [TJOI2013]数字根 st
题面 我先对数字根打了个表,然后得到了一个结论:\(a\)的数字根=\((a-1)mod 9+1\) 我在询问大佬后,大佬给出了一个简单的证明: \(\because 10^n\equiv 1(mod ...
- 【题解】洛谷P3166 [CQOI2014] 数三角形(组合+枚举)
洛谷P3166:https://www.luogu.org/problemnew/show/P3166 思路 用组合数求出所有的3个点组合(包含不合法的) 把横竖的3个点共线的去掉 把斜的3个点共线的 ...
随机推荐
- 今天犯的一个错误,导致method GET must not have a request body
事件经过: 1.在本地机器运行完全正常的程序,手动人工发包到测试环境上,后台日志频频报method GET must not have a request body. 2.使用postman发送pos ...
- 常用css框架 Sass/Less
Bootstrap less/sass Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量.嵌 ...
- 内部div自动扩张剩余宽度
<div id="container"> <div id="left">左边</div> <div id=" ...
- @RequestMapping[转]
转自 http://www.cnblogs.com/qq78292959/p/3760560.html#undefined 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST. ...
- jq滚动条美化
https://github.com/inuyaksa/jquery.nicescroll(插件地址) https://blog.csdn.net/zyy_0725/article/details/8 ...
- 简洁的MVC思想框架——Nancy(Session的使用)
前文提到关于Nancy中GET和POST以及外部引用图片,css和JS的文件等操作.今天所讲的是Nancy关于Session相关操作. Session作为web开发中极其重要的一部分,而Nancy中S ...
- adb如何连接mumu模拟器并修改Android ID
adb工具下载安装 https://dl.google.com/android/repository/platform-tools-latest-windows.zip 参考:https://blog ...
- Object-C,数组NSArray
晚上回来,写了2个iOS应用程序. 就是在界面中,展示标签.一种是手动构造界面,然后绑定事件.另外一种是,使用自带的界面作为容器,但是手动向里面放其它界面元素. 书中的观点是,使用图形化界面,构造界面 ...
- phpstorm 激活方法
1.本地破解激活(推荐) 下载JetbrainsCrack-2.5.6.jar 链接: http://pan.baidu.com/s/1miPpE2k 密码: w3yc 放到phpstorm安装目录下 ...
- 11g v$wait_chains 与 hanganalyze
11g之后,通过v$wait_chains视图诊断数据库hang和Contention 11g之前,通常我们数据库hang住了之后,我们会对数据库做hang analyze来进行分析,在11g之后 ...