循环序列

循环序列

(circulate.cpp/c/pas)

(1s/256M)

题目描述

Alice与Bob在玩游戏:

Alice首先给出两个数X与Y(X<=Y);

Bob则按顺序将X,X+1,X+2,…,Y-1,Y写成一个大数S。

Alice最后将S首尾相连,让其围成一个圈。

这时,Bob想知道,从S的开头出发,往后的第L到第R数字之和是多少。

输入格式(circulate.in)

第一行四个整数X,Y,L,R,代表Alice的两个数字和Bob想要知道的第L位到第R位的数字之和。

输出格式(circulate.out)

仅一行,一个整数M,代表第L位到第R位的数字之和。

样例输入

10 11 4 12

样例输出

7

样例解释

Bob将数字写成一行大数S = 1011;围成一个圈后,从第4位到第12位分别是1,1,0,1,1,1,0,1,1,它们的和是7.

数据范围与限制

对于50%的数据,L=1, X,Y,L,R<=1000;

对于100%的数据,S的长度不大于10000,X,Y,L,R<=100000000.

~\(≧▽≦)/~啦啦啦思路:

首先按题目要求将xy之间的数拆分存到一个数组中,然后用另一个数组将该数组倒叙存储,(便于计算),运用前缀和,取整环和不完整环,相加

(v)~ 代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4
 5 const int N = 1e5 + 6;
 6 int x,y,r,l,n,m;
 7 int a[N],s[N],b[N];
 8
 9 void work(int x,int y){
10     n=0;
11     for(int i=x;i<=y;i++){
12         m=0;
13         for(int t=i; t ;t/=10) b[++m]=t%10;
14         for(int t=m; t ;t--) a[++n]=b[t];
15     }
16     s[0] = 0;
17     for(int i=1;i<=n;i++) s[i]= s[i-1] + a[i];//前缀和
18 }
19
20 int cal(int p){
21     if(p == 0) return 0;
22     int g = (p-1)/n;//整
23     int r = (p-1)%n + 1;//余
24     return s[n] * g + s[r];
25 }
26
27 int main() {
28     cin>>x>>y;
29     cin>>l>>r;
30     work(x,y);
31     cout<<cal(r)-cal(l-1);
32     return 0;
33 } 
时间: 2024-10-05 07:25:24

循环序列的相关文章

流程控制-for循环(序列/字典举例)

流程控制-for循环(序列) 循环 循环是一个结构,导致程序要重复一定的次数. 条件下循环也是如此,当然条件变为假,循环结束. for循环: 在序列里,使用for循环遍历. 语法: for iterating_var in sqquence: statement(s) 举例: (例1)for用法举例 In [1]: a = 'ABC' In [2]: a Out[2]: 'ABC' In [3]: for i in a: ...:     print i ...: A B C In [4]: f

deeplearning.ai 序列模型 Week 1 循环序列模型

1. Notations 循环序列模型的输入和输出都是时间序列.$x^{(i)<t>}$表示第$i$个输入样本的第$t$个元素,$T_x^{(i)}$表示输入的第$i$个样本的元素个数:$y^{(i)<t>}$表示第$i$个样本的输出的第$t$个元素,$T_y^{(i)}$表示第$i$个样本的输出的元素个数. 在NLP领域,为了描述一句话,会有一个词典(vocabulary),里面保存了所有的英文单词(一般包含3万到5万单词),每个单词依次有一个编号.这样每个单词都可以用一个向量表

个人永久性免费-Excel催化剂功能第36波-新增序列函数用于生成规律性的循环重复或间隔序列

啃过Excel函数的表哥表姐们,一定对函数的嵌套.数组公式等高级的应用有很深的体会,威力是大,但也烧死不少脑细胞,不少人就在这样的绕函数中光荣地牺牲了,走向从入门到放弃.Excel催化剂的创立,初衷就是为了让普通用户,借助类似化学催化剂的作用,让平常难以有反应的常规使用,能够瞬间被点燃,借力完成过去很难完成的事情.此篇给大家介绍一些过往用函数潜逃较为复杂完成的事情,如今仅通过简单的一个自定义函数即可完成. 文章出处说明 原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有

Python -- 循环技巧(Looping Techniques)

1.当想同时得到索引和对应的值时,可以用enumerate()函数 for i, v in enumerate(['tic', 'tac', 'toe']): print i, v 0 tic 1 tac 2 toe 2.要同时循环两个或多个序列,可以与zip()函数配对. questions = ['name', 'quest', 'favorite color'] answers = ['lancelot', 'the holy grail', 'blue'] for q, a in zip

SQL基础--序列

序列是一种数据库对象,用来自动产生一组唯一的序号:序列是一种共享式的对象,多个用户可以共同使用序列中的序号. 序列的创建语法 CREATE SEQUENCE sequencename [INCREMENT BY n]             定义序列增长步长,省略为1 [START WITH m]               序列起始值,省略为1 [{MAXVALUE n | NOMAXVALUE}] 序列最大值, [{MINVALUE n | NOMINVALUE}] 序列最小值 [{CYCL

LTE-TDD随机接入过程(5)-怎么生成64个前导码序列

在LTE里,每个小区都有64个前导码,那么这些前导码序列Preamble Sequences是怎么生成的呢?本文就旨在说明生成前导码序列的过程. 前导码序列集合包括根序列和由该根序列生成的循环移位序列,计算过程分为两个大的步骤: (1)生成一个ZC(Zadoff-Chu)根序列Xu(n),作为一个基准序列 (2)将基准序列Xu(n)进行循环移位,生成63个不同的循环序列Xuv(n) 如果在(2)中根据基准序列得到的移位序列不足63个,则重新进入(1),生成下一个基准序列,以及新的基准序列相应的移

运行循环(Run Loops)

运行循环是与线程相关的基础工具的一部分.运行循环是一个用来安排工作并协调传入事件接收的一个事件处理循环.运行循环的目的是当需要工作的时候,让你的线程处于忙碌状态:当没有工作时,让你的线程处于睡眠状态. 运行循环管理并不是完全自动运行,你必须设计线程代码在适当的时间启动运行循环并响应传入的事件.Cocoa和核心基础提供运行循环对象来帮助你配置和管理你的线程运行循环.你的引用不需要显式的创建这些对象,每个线程,包括应用的主线程都有一个关联的运行循环对象.然而,只有次要线程需要显式的运行他们的运行循环

序列(学习笔记)

序列的作用 许多的数据库之中都会为用户提供一种自动增长列的操作 序列(Sequence)可以自动的按照即定的规则实现数据的编号操作 序列的完整创建语法 CREATE SEQUENCE 序列名称 [ INCREMENT BY 步长 ] [ START WITH 开始值 ] [ MAXVALUE 最大值 | NOMAXVALUE ] [ MINVALUE 最小值 | NOMINVALUE ] [ CYCLE | NOCYCLE ] [ CACHE 缓存大小 | NOCACHE ] ; 创建默认序列的

1050 循环数组最大子段和

个整数组成的循环序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列).当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13.和为20. Input 第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N+1行:N个整数 (-10^9 <= S[i] <