前缀和的应用 CodeForces - 932B Recursive Queries
题目链接:
https://vjudge.net/problem/1377985/origin
题目大意就是要你把一个数字拆开,然后相乘。
要求得数要小于9,否则递归下去。
这里用到一个递归函数:
int f(int x)
{
if(x < ) return x;
int ans = ;
while(x)
{
if(x% != ) ans *= x%;
else ans *= ;
x /= ;
}
return f(ans);
}
这个函数用来求得一个数字最终得到的那个k值是多少。
然后开一个二元数组记录一下,并且用到了前缀和,统计从1开始k值出现的次数:(打表)
void get_table()
{
for(int i = ; i <= MX; ++i) mp[i][f(i)]++;
for(int i = ; i <= MX; ++i)
for(int j = ; j <= ; ++j)
mp[i][j] += mp[i-][j];
}
最后,得到代码如下:(AC代码)
#include <iostream>
#include <cstdio> using namespace std;
const int MX = 1e6+;
int mp[MX][]; int f(int x) //递归求值
{
if(x < ) return x;
int ans = ;
while(x)
{
if(x% != ) ans *= x%;
else ans *= ;
x /= ;
}
return f(ans);
} void get_table() //打表求值
{
for(int i = ; i <= MX; ++i) mp[i][f(i)]++;
for(int i = ; i <= MX; ++i)
for(int j = ; j <= ; ++j)
mp[i][j] += mp[i-][j];
} int main()
{
get_table();
int T;
scanf("%d", &T);
while(T--)
{
int le, ri, k;
scanf("%d%d%d", &le, &ri, &k);
int ans = mp[ri][k] - mp[le-][k]; //left减一的理由是从le开始包括le, 若不减一的话left也会被减掉!
printf("%d\n", ans);
}
return ;
}
如有疑问,欢迎评论!
前缀和的应用 CodeForces - 932B Recursive Queries的更多相关文章
- 前缀和:CodeForces 932B Recursive Queries
Description Let us define two functions f and g on positive integer numbers. You need to process Q q ...
- Codeforces 1117G Recursive Queries [线段树]
Codeforces 洛谷:咕咕咕 思路 设\(L_i,R_i\)为\(i\)左右第一个大于它的位置. 对于每一个询问\(l,r\),考虑区间每一个位置的贡献就是\(\min(r,R_i-1)-\ma ...
- Codeforces 932.B Recursive Queries
B. Recursive Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- CodeForces - 940C + CodeForces - 932B (两道比较好的模拟题)
940C链接:http://codeforces.com/problemset/problem/940/C C. Phone Numbers time limit per test 2 seconds ...
- [Codeforces]817F. MEX Queries 离散化+线段树维护
[Codeforces]817F. MEX Queries You are given a set of integer numbers, initially it is empty. You sho ...
- sql script: Graphs, Trees, Hierarchies and Recursive Queries
--------------------------------------------------------------------- -- Inside Microsoft SQL Server ...
- sql server: Graphs, Trees, Hierarchies and Recursive Queries
--------------------------------------------------------------------- -- Chapter 09 - Graphs, Trees, ...
- [Codeforces 266E]More Queries to Array...(线段树+二项式定理)
[Codeforces 266E]More Queries to Array...(线段树+二项式定理) 题面 维护一个长度为\(n\)的序列\(a\),\(m\)个操作 区间赋值为\(x\) 查询\ ...
- 笔记-Recursive Queries
Recursive Queries \[m_{l,r}=\textrm{id}(\max_{i=l}^r a_i)\\ f(l,r)= \begin{cases} (r-l+1)+f(l,m_{l,r ...
随机推荐
- java----面对对象
面对对象: public class Demo { public static void main(String[] args){ Horse h = null; h = new Horse(); / ...
- mybatis常见错误总结
1. 现象:mybatis xml文件中查询的返回类型写成list或java.util.List时,执行sql时报 java.lang.UnsupportedOperationException错误. ...
- python selenium打开新窗口,多窗口切换
# coding=utf-8 from selenium import webdriver browser=webdriver.Firefox() browser.maximize_window() ...
- JMeter 中对于Json数据的处理方法
JMeter中对于Json数据的处理方法 http://eclipsesource.com/blogs/2014/06/12/parsing-json-responses-with-jmeter/ J ...
- 俺也会刷机啦--windows7下刷android
刷机很多人都会,本文只为像我这种入门的朋友而写的. 风险提示: 1. SD卡数据极可能会丢失(我这次就全丢了). 2. 升级失败. (俺的)环境说明: windows7 专业版64位 cmd命令行工具 ...
- Python入门:求1-2+3-4+5...99的所有数的和
num =1 sum =0 while num <=99: if num % 2 ==1: sum = sum + num num =num +1 print(sum) 2.求1-2+3-4+5 ...
- 去掉A标签的点击选中边框
非IE a:focus { outline:none; }
- 《深入探索Netty原理及源码分析》文集小结
<深入探索Netty原理及源码分析>文集小结 https://www.jianshu.com/p/239a196152de
- 如何区分oracle服务器、oracle客户端、plsql?
大家在安装oracle数据库的时候,是不是有很多区分不清的概念,以至于束手无策呢?现在有一个问题,就是怎么区分oracle服务器.oracle客户端.plsql三者的概念?我想,新手在安装的时候可能会 ...
- python全栈开发day64-模板-变量和(.)的使用,filters和自定义filter
一.上周内容回顾 day64 内容回顾: 1. 所有的django命令 1. 安装 pip install django==1.11.14 pip install -i 源 django==1.11. ...