jzoj2700 【GDKOI2012模拟02.01】数字

传送门:https://jzoj.net/senior/#main/show/2700

【题目大意】

令n为正整数,S(n)为n的各位数字之和,令

小Z喜欢的数一定能表示成 x * D(x) 这种形式。

小D也是个开朗的人,他知道QQ号码是随出来的。那么,他想知道在区间[L, R]中,他喜欢的数出现了多少次呢?

多组数据。

1<=T<=5, 1<=L<=R<=10^18

【题解】

打一个表就知道D(n)=((n-1) mod 9) + 1

然后我们如果有k * D(k) = n,那么有n + X = (k + X/D(k)) * D(k + X/D(k))。

由于D(k)属于1~9,2520为1~9的公倍数,且D(k)是9个一循环,所以X/D(k)也要是9的倍数,所以X最小值为2520 * 9。

早上不管这么多直接刚了个3628800就过了。。

# include <stdio.h>
# include <string.h>
# include <iostream>
# include <algorithm>
// # include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int M = 5e5 + 10, F = 3628800;
const int mod = 1e9+7;

# define RG register
# define ST static

int T;
ll L, R;
bool ok[F + 5];
int all;

inline int D(ll x) {return (x-1)%9+1;}

# define beg(x) ((x-1)*F+1)
# define end(x) (x*F)
# define block(x) ((x-1)/F+1)
# define ord(x) ((x-1)%F+1)

inline void sol() {
    cin >> L >> R;
    ll le = block(L), ri = block(R), ans = 0;
    if(le == ri) {
        for (ll i=L; i<=R; ++i) ans += ok[ord(i)];
        cout << ans << endl;
        return ;
    }
    if(ri - le >= 2) ans = (ll)(ri - le - 1) * all;
    for (ll i=end(le); i>=L; --i) ans += ok[ord(i)];
    for (ll i=beg(ri); i<=R; ++i) ans += ok[ord(i)];
    cout << ans << endl;
}

int main() {
//    freopen("num.in", "r", stdin);
//    freopen("num.out", "w", stdout);
    cin >> T;
    for (int i=1, t; i<=F; ++i) {
        for (int j=1; j<=9; ++j) {
            if(i%j) continue;
            t = i/j;
            if(D(t) == j) {
                ok[i] = 1;
                break;
            }
        }
        all += ok[i];
    }
    while(T--) sol();
    return 0;
}

时间: 2024-11-05 16:39:45

jzoj2700 【GDKOI2012模拟02.01】数字的相关文章

jzoj2701 【GDKOI2012模拟02.01】矩阵

传送门:https://jzoj.net/senior/#main/show/2701 [题目大意] 给出矩阵A,求矩阵B,使得 最小,矩阵B每个元素在[L,R]内 n<=200,1<=Aij,L,R<=1000, L<=R [题解] 我们二分答案x,然后对行列建点,每行向每列连[L,R]的边,然后S向每行连[max(S[i]-x), S[i]+x]的边,每列向T连[max(T[i]-x), T[i]+x]的边,判断是否有可行流即可. 其中S[i]表示A中第i行的和,T[i]表示A

模拟KVM和数字KVM有什么区别

Hello,大家好!以后KINAN的文章就由我来写啦[偷笑],领导早安排下来了,一周一篇文章硬性任务,但小编一直迟迟未肯动手,为什么呢?文章写不好领导就让我滚蛋啦[大写的尴尬加委屈]... 计划以后每周KINAN微信公众号都会为广大关注KINAN的读者朋友们提供KVM基础知识的普及.Kinan最新活动动态等应有尽有,因此,没有关注的还在等什么啦?[原谅我卖个萌]~ 好了,言归正传吧,每次在KINAN官网在线客服上问客户要模拟KVM还是数字KVM的时候,客户都会问模拟KVM和数字KVM有什么区别?

模拟频率与数字频率

在数字信号处理的学习中,很多刚入门朋友常常为模拟频率.数字频率及其相互之间的关系所迷惑,甚至是一些已经对数字信号处理有所了解的朋友也为这个问题所困惑. 我们通常所说的频率,在没有特别指明的情况下,指的是模拟频率,其单位为赫兹(Hz),或者为1/秒(1/s),数学符号用f来表示.这是因为现实世界中的信号大多为模拟信号,频率是其重要的物理特性.以赫兹表示的模拟频率表示的是每秒时间内信号变化的周期数.如果用单位圆表示的话,如图1所示,旋转一圈表示信号变化一个周期,则模拟频率则指的是每秒时间内信号旋转的

关于codehunt Level 02.01 的疑问

codehunt Level 02.01 原题大意如下 : 假设给定下列函数声明 public static int[] Puzzle(int n) { return null; } 要求写出该方法具体函数代码,返回值应为下列类似的值 n 值 1 {0} 2 {0, 1} 3 {0, 1, 2} 我写的如下方法 public static int[] Puzzle(int n) { int[] re = new int[n]; for (int i=0; i<n; i++) re[i] = i;

为什么要将模拟地和数字地分开,如何分开(转)

(A)为什么要将模拟地和数字地分开,如何分开?Answer:模拟信号和数字信号都要回流到地,因为数字信号变化速度快,从而在数字地上引起的噪声就会很大,而模拟信号是需要一个干净的地参考工作的.如果模拟地和数字地混在一起,噪声就会影响到模拟信号.一般来说,模拟地和数字地要分开处理,然后通过细的走线连在一起,或者单点接在一起.总的思想是尽量阻隔数字地上的噪声窜到模拟地上.当然这也不是非常严格的要求模拟地和数字地必须分开,如果模拟部分附近的数字地还是很干净的话可以合在一起.& B) v5 l- ?+ U

(转)关于模拟地和数字地分开的问题解释!

(A)为什么要将模拟地和数字地分开,如何分开? Answer: 模拟信号和数字信号都要回流到地,因为数字信号变化速度快,从而在数字地上引起的噪声就会很大,而模拟信号是需要一个干净的地参考工作的.如果模拟地和数字地混在一起,噪声就会影响到模拟信号.一般来说,模拟地和数字地要分开处理,然后通过细的走线连在一起,或者单点接在一起.总的思想是尽量阻隔数字地上的噪声窜到模拟地上.当然这也不是非常严格的要求模拟地和数字地必须分开,如果模拟部分附近的数字地还是很干净的话可以合在一起. (B)为什么要将人和猪分

模拟地与数字地详解

转自:  http://blog.csdn.net/kevinhg/article/details/12080751 二者本质是一直的,就是数字地和模拟地都是地.要明白为什么要分开,先听一个故事:我们公司的商务楼,2楼是搞模拟的,3楼是搞数字的,整幢楼只有一部电梯,平时人少的时候还好办,上2楼上3楼互不影响,但每天上下班的时候就不得了了,人多得很,搞数字的要上3楼,总是被2楼搞模拟的人影响,2楼模拟的人要下楼,总是要等电梯上了3楼再下来,互相影响很是麻烦,商务楼的物业为解决这个问题,提出了2个方

模拟地和数字地单点接地

*模拟地和数字地单点接地* 只要是地,最终都要接到一起,然后入大地.如果不接在一起就是"浮地",存在压差, 容易积累电荷,造成静电.地是参考0 电位,所有电压都是参考地得出的,地的标准要一致, 故各种地应短接在一起.人们认为大地能够吸收所有电荷,始终维持稳定,是最终的地参考 点.虽然有些板子没有接大地,但发电厂是接大地的,板子上的电源最终还是会返回发电厂 入地.如果把模拟地和数字地大面积直接相连,会导致互相干扰.不短接又不妥 有四种方法解决此问题: 1. 用磁珠连接: 2. 用电容连接

02.02.01 第1章 简介及基础操作(Power BI商业智能分析)

02.02.01.01 powerbi简介 00:10:59 02.02.01.02 query数据导入 00:03:26 具体操作实例如下: 02.02.01.03导入access数据 00:05:40 方式一:加载 方式二:加载 到 双击用户明细,进入Power Query 02.02.01.04导入csv和Excel和txt文件 00:04:47 02.02.01.05纵向合并数据 00:03:14 02.02.01.06横向合并数据 00:05:11 02.02.01.07数据填充 00