## 输入描述:

一行包括两个数字l,r，表示你给处女座展示的数字范围为[l,r]。

## 输出描述:

一行一个整数，表示处女座内心激动的次数。

## 输入

10 20

## 输出

1

## 备注:

0≤l≤r≤1018

1.数学

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll l,r,pl,pr;
ll ni[22]={0},num[22]={0};

string s;
int len;
ll getnum(ll k)
{
if(k<6) return k;
return k-1;
}
ll solve(ll k)
{
int cnt=0;
memset(num,0,sizeof(num));
int flag=0;
while(k)
{
if(k%10==6) flag=1;
num[cnt++]=k%10;
k/=10;
}
if(flag)


## 【poj1961\kmp算法next数组思想】Period

http://poj.org/problem?id=1961

Period
 Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 20690 Accepted: 10091

Description

For each prefix of a given string S with N characters (each character has an ASCII code between 97 and 126, inclusive), we want to know whether the prefix is a periodic string. That is, for each i (2 <= i <= N) we want to know the largest K > 1 (if there is one) such that the prefix of S with length i can … Read the rest

## 【字符串哈希】CH1401 兔子与兔子

描述

aabbaabb
3
1 3 5 7
1 3 6 8
1 2 1 2

Yes
No
Yes

• 坑：strlen很慢，放在循环里会超时。
• s+1输入字符串，s[0]是结束符，如果传入strlen(s)会返回1；
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int maxn=1e6+23;
char s[maxn];
int m,l1,l2,r1,r2;
ull f[maxn],p[maxn];


## 【对顶堆】Running Median POJ – 3784

Running Median
Time Limit: 1000MS		Memory Limit: 65536K
Total Submissions: 3467		Accepted: 1606
Description

For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.
Input

The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set 

## 【STL::set】CH1301 邻值查找(迭代器使用学习)

描述

min(1≤j<i) ⁡|A_i-A_j|

n-1行，每行2个用空格隔开的整数。分别表示当i取2~n时，对应的 min(1≤j<i) ⁡|A_i-A_j| 和 P_i 的值。

3
1 5 3

4 1
2 1

• 迭代器的使用：
• set的迭代器只支持++和–两种运算
• it++ 和 ++it 是不一样的，前者先返回自己，再运算，后者是先运算再返回自己。在使用的时候需要注意。
• *号解除引用，*(it++) 和 *(++it)也是不一样的。尽管有括号。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+233;
map<int,int> hm;
set<int> st;
int n;
int k[maxn]={0};
int main()
{
scanf("%d",&n);
scanf("%d",&k[1]);
st.insert(k[1]);
hm[k[1]]=1;
for(int i=2;i<=n;i++)
{
scanf("%d",&k[i]);
st.insert(k[i]);


## 【栈/CF534B】Game with string

http://codeforces.com/contest/1104/problem/B

题意：

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+233;
char ss[maxn];
stack<int> prs;
int cond=0;
int main()
{
scanf("%s",ss);
int len=strlen(ss);
prs.push(ss[0]);
for(int i=1;i<len;i++)
{
if(!prs.empty()&&prs.top()==ss[i])
{
prs.pop();
cond++;
}
else
{
prs.push(ss[i]);
}
}
printf("%s",(cond%2==1)?"Yes":"No");
}

## VScode配置g++编写c++

1. 将g++添加到环境遍历
2. 安装插件”code runner”
3. 设置-插件-run code configuration-Run in terminal 勾选上（否则如果程序里有输入等待将无法继续）
4. 下载微软官方插件C/C++ 以便于调试
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",

"program": "{fileDirname}/{fileBasenameNoExtension}.exe",

//"program": "enter program name, for example {workspaceFolder}/a.exe",              "args": [],              "stopAtEntry": false,              "cwd": "{workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
//"miDebuggerPath": "/path/to/gdb",
"miDebuggerPath": "C:/Program Files (x86)/Dev-Cpp/MinGW64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]


## 【数论】蓝桥杯历届试题 小数第n位

http://lx.lanqiao.cn/problem.page?gpid=T456

问题描述
我们知道，整数做除法时，有时得到有限小数，有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0，它们就有了统一的形式。

本题的任务是：在上面的约定下，求整数除法小数点后的第n位开始的3位数。

一行三个整数：a b n，用空格分开。a是被除数，b是除数，n是所求的小数后位置（0<a,b,n<1000000000）

一行3位数字，表示：a除以b，小数后第n位开始的3位数字。

1 8 1

125

1 8 3

500

282866 999000 6

914

[latex]

\frac{a}{b} \mod p = \frac{a \mod b \times p}{b}

\frac{a}{b} \times 10^{n+2} \mod 10^3 = \frac{a \times 10^{n+2} \mod b \times 10^3}{b}

= \frac{(a \mod b \times 10^3) \times (10^{n+2} \mod b \times 10^3)}{b}

n取1e10，所以快速幂一下。就做完了，简单数论

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,n,mod;
ll ksm(ll 

## 蓝桥杯历届试题 小计算器

http://lx.lanqiao.cn/problem.page?gpid=T459

问题描述
模拟程序型计算器，依次输入指令，可能包含的指令有

1. 数字：'NUM X'，X为一个只包含大写字母和数字的字符串，表示一个当前进制的数
3. 进制转换指令：'CHANGE K'，将当前进制转换为K进制(2≤K≤36)
4. 输出指令：'EQUAL'，以当前进制输出结果
5. 重置指令：'CLEAR'，清除当前数字

指令按照以下规则给出：
数字，运算指令不会连续给出，进制转换指令，输出指令，重置指令有可能连续给出
运算指令后出现的第一个数字，表示参与运算的数字。且在该运算指令和该数字中间不会出现运算指令和输出指令
重置指令后出现的第一个数字，表示基础值。且在重置指令和第一个数字中间不会出现运算指令和输出指令
进制转换指令可能出现在任何地方

运算过程中中间变量均为非负整数，且小于2^63。
以大写的'A'~'Z'表示10~35

第1行：1个n，表示指令数量
第2..n+1行：每行给出一条指令。指令序列一定以'CLEAR'作为开始，并且满足指令规则

依次给出每一次'EQUAL'得到的结果

7
CLEAR
NUM 1024
CHANGE 2
NUM 100000
CHANGE 8
EQUAL

2040

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
map<ll,char> eco;
map<char,ll> deco;
int k=10;
ll ans=0;
char num[99];
void init()
{
for(ll i=0;i<=9;i++)
{
eco[i]=i+'0';
deco[i+'0']=i;
}
for(ll i='A';i<='Z';i++)
{
eco[i-'A'+10]=i;
deco[i]=i-'A'+10;
}
}
ll getnum()
{