P1611 循环的数字

题目描述

你曾经因为看见一样的东西一遍又一遍地重复、循环而对电视节目感到厌烦么?好吧,虽然我并不关心电视节目的好坏,不过有时却也很像那样不断循环的数字。

让我们假定两个不同的正整数 (n,m) 是循环的,当且仅当你能通过将 n 末端的几个数字移到它的首端而不改变移动的数字的顺序并使整个数字变成 m 。举个例子,(12345,34512) 就是一对循环的数字,因为你能把 12345 中末尾的 345 移到 12 前面,从而得到 34512。注意,为了成为一对循环的数字,n 和 m 位数必须相同。无论 n 或 m 都没有前置的 0。

现在给定正整数 A 和 B,并保证 A 和 B 位数相同且均没有前置 0,求存在多少循环的正整数对 (n,m),使得 A≤n≤m≤B ?

输入格式

本题有共有 10 个测试点。 每个输入文件包含 1 行。 第 1 行有两个用空格隔开的正整数 A 和 B。

输出格式

每个输出文件应包含一个正整数 x,表示共有 x 组循环的正整数对 (n,m) 使得 A≤n≤m≤B。

输入输出样例

输入 #1

1111 2222

输出 #1

287

说明/提示

1≤A,B≤2×10^6。

思路

模拟可过。

对于题目中描述的几个操作,分别解决,然后直接调用即可得到答案。

  1. 我们可以选择把数字转换成字符串处理。(其实是不想去想怎么循环数字

    数字转字符串很简单,可以直接用一个while循环解决。

    代码如下:

    while(k)s[l++]=k%10+'0',k/=10;	
    

    这样我们是倒序存入的,所以字符串转数字稍微麻烦一点:

    inline int toi(int l){	R int k=0;for(R int i=l-1;i>=0;i--)k=k*10+s[i]-'0';return k;
    }
    

  2. 现在对于循环进行处理。

    注意:1. 数字首位不为零,如果为零就继续下一个。

    ​ 2. 这里的循环按照题目定义,不能用next_permutation

    inline int nxt(int l,int k){s[l]=s[0];for(R int i=0;i<l;i++)s[i]=s[i+1];if(s[0]==0)return nxt(l,k);	if(toi(l)!=k)return 1;return 0;
    }
    

  3. 按照题目描述,从 �A 到 �B 枚举每一个数字,判断能够组成多少个符合要求的正整数对。

    inline int ck(int k){R int l=0,t,f=k;while(k)s[l++]=k%10+'0',k/=10;while(nxt(l,f)){t=toi(l);if(t>f&&t<=m&&!vis[t])++k;}return k;
    }

完整代码

#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
bool vis[2000001];
char s[100];
int read(){int x=0;char c=getchar();//freopen("a.in","r",stdin);while(c>'9'||c<'0')c=getchar();while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();//freopen("b.in","r",stdin);}return x;
}
int toi(int l){int k=0;for(int i=l-1;i>=0;i--)k=k*10+s[i]-'0';return k;
}
int next(int l,int k){s[l]=s[0];for(int i=0;i<l;i++)s[i]=s[i+1];if(s[0]==0)return next(l,k);if(toi(l)!=k)return 1;return 0;
}
int ck(int k){int l=0,t,f=k;while(k)s[l++]=k%10+'0',k/=10;while(next(l,f)){t=toi(l);if(t>f&&t<=m&&!vis[t])++k;}return k;
}
int main(){n=read();m=read();for(int i=n;i<=m;i++){vis[i]=1;ans+=ck(i);}cout<<ans<<endl;//freopen("c.out","w",stdout);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Solidity攻击合约:“被偷走的资金”

在以太坊智能合约开发中&#xff0c;Solidity是最常用的编程语言。然而&#xff0c;由于代码编写不当或缺乏安全意识&#xff0c;合约可能面临各种攻击。本文将通过一个简单的Solidity合约示例&#xff0c;展示一个潜在的攻击合约&#xff0c;并分析其相对于原本合约的危害以及…

计算机设计大赛 疲劳驾驶检测系统 python

文章目录 0 前言1 课题背景2 Dlib人脸识别2.1 简介2.2 Dlib优点2.3 相关代码2.4 人脸数据库2.5 人脸录入加识别效果 3 疲劳检测算法3.1 眼睛检测算法3.2 打哈欠检测算法3.3 点头检测算法 4 PyQt54.1 简介4.2相关界面代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#x…

024—pandas 将一列数据等份变形

前言 今天我们将一个 Series 序列数据转为 DataFrame结构。我们将用么 pd.cut() 对数据进行分箱&#xff0c;也会用到 NumPy 的 np.reshape() 对阵列数据进行变形。接下来我们看看具体的需求&#xff0c;再分析一下解决思路&#xff0c;最后用代码实现它。 需求&#xff1a; …

[MS5146T替代ADS1246T、MS5147替代ADS1247、MS5148T替代ADS1248] 2kSPS、24bit Σ-Δ ADC

[MS5146T替代ADS1246T、MS5147替代ADS1247、MS5148T替代ADS1248] 2kSPS、24bit Σ-Δ ADC 主要特点 ◼ 可编程转换速率&#xff1a;最高 2kSPS ◼ 集成输入多路选择器 ◼ PGA 噪声&#xff1a; 70nV(RMS)PGA128 ◼ 集成双路匹配可编程电流源 ◼ 集成低温漂 2.048…

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…

GEE图像可视化常用函数

目录 图层操作Map.addLayer&#xff08;&#xff09;Map.centerObject&#xff08;&#xff09; 直方图ui.Chart.image.histogram&#xff08;&#xff09; 图层操作 Map.addLayer&#xff08;&#xff09; Map.addLayer 是 Google Earth Engine 中用于向地图添加图层的方法。…

C语言:数组、字符串知识点整理:

数组&#xff1a;&#xff08;长度的计算&#xff09; 补充&#xff1a;数组长度sizeof(arr)/sizeof(arr[0]) 注意&#xff1a;&#xff01;&#xff01;&#xff01;不适用于当arr 充当形参时&#xff08;函数传参&#xff09;&#xff01;&#xff01;&#xff01; 因为函数…

【Angular】CLI命令总结

显示版本&#xff1a;ng version 简写&#xff1a;ng v 显示帮助&#xff1a;ng --help 新建项目&#xff1a;ng new 项目名 简写&#xff1a;ng n 项目名 切换目录&#xff1a;cd 目录 启动项目&#xff1a;ng serve --open 或者 npm run start 新建组件&#xff1a;ng g…

《Effective Modern C++》- 极精简版 15-21条

本文章属于专栏《业界Cpp进阶建议整理》 继续上篇《Effective Modern C》- 极精简版 5-14条。本文列出《Effective Modern C》的15-21条的个人理解的极精简版本。 Item15、尽量使用constexpr constexpr形容对象 constexpr对象都是const&#xff0c;但是const对象不一定是conste…

七、门控循环单元语言模型(GRU)

门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;GRU&#xff09;是 LSTM 的一个稍微简化的变体&#xff0c;通常能够提供同等的效果&#xff0c;并且计算训练的速度更快。 门控循环单元原理图&#xff1a;参考门控循环单元 原理图中各个图形含义&#xff1a; X(t)&a…

C语言逗号运算符(,)

在C语言中&#xff0c;逗号运算符&#xff08;,&#xff09;用于在表达式中分隔多个子表达式&#xff0c;并按照从左到右的顺序依次计算这些子表达式。逗号运算符的运算结果是最后一个子表达式的值。 逗号运算符的底层行为是依次计算每个子表达式&#xff0c;并将每个子表达式…

gumbel-softmax如何实现离散分布可微+torch代码+原理+证明

文章目录 背景方法通俗理解什么是重参数化gumbel-softmax为什么是gumbeltorch实现思考 背景 这里举一个简单的情况&#xff0c;当前我们有p1, p2, p3三个概率&#xff0c;我们需要得到最优的一个即max(p1, p2, p3)&#xff0c;例如当前p3 max(p1, p2, p3)&#xff0c;那么理想…

L1-039 古风排版

中国的古人写文字&#xff0c;是从右向左竖向排版的。本题就请你编写程序&#xff0c;把一段文字按古风排版。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;<100&#xff09;&#xff0c;是每一列的字符数。第二行给出一个长度不超过1000的非空字符串&a…

【从部署服务器到安装autodock vina】

注意&#xff1a;服务器 linux系统选用ubuntu 登录系统&#xff0c;如果没有图形化见面可以先安装图形化界面 可以参考该视频 --> linux安装图形化界面 非阿里云ubuntu 依次执行以下命令 sudo apt-get update sudo apt-get install gnome sudo reboot阿里云ubuntu 需多执…

台积电(TSMC)可能将获得美国50亿美元激励资金

彭博社援引知情人士消息称&#xff0c;台积电&#xff08;TSMC&#xff09;为其位于亚利桑那州的工厂可能将获得美国联邦政府提供的超过50亿美元的激励资金。虽然这笔款项尚未正式宣布&#xff0c;因为尚需与这家全球最大芯片代工商最终敲定细节&#xff0c;但金额显然非常可观…

分布式解决方案

目录 1. 分布式ID1-1. 传统方案1-2. 分布式ID特点1-3. 实现方案1-4. 开源组件 1. 分布式ID 1-1. 传统方案 时间戳UUID 1-2. 分布式ID特点 全局唯一高并发高可用 1-3. 实现方案 方案总结&#xff1a; 号段模式 有两台服务器&#xff0c;给第一台服务器分配0-100&#xff0…

this.$watch 侦听器 和 停止侦听器

使用组件实例的$watch()方法来命令式地创建一个侦听器&#xff1b; 它还允许你提前停止该侦听器 语法&#xff1a;this.$watch(data, method, object) 1. data&#xff1a;侦听的数据源&#xff0c;类型为String 2. method&#xff1a;回调函数&#x…

前端手册-实现挂坠灯笼效果

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

c#触发事件

Demo1 触发事件 <Window x:Class"WPFExample.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"Title"WPF Example" Height"600" Wi…

如何在Linux上为PyCharm创建和配置Desktop Entry

在Linux操作系统中&#xff0c;.desktop 文件是一种桌面条目文件&#xff0c;用于在图形用户界面中添加程序快捷方式。本文将指导您如何为PyCharm IDE创建和配置一个 .desktop 文件&#xff0c;从而能够通过应用程序菜单或桌面图标快速启动PyCharm。 步骤 1: 确定PyCharm安装路…