首页 > 试题广场 >

数据分页说明

[编程题]数据分页说明
  • 热度指数:1289 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
数据分页,对于指定的页数和每页的元素个数,返回该页应该显示的数据。

输入描述:
第一行输入数据个数,第二行全部数据,第三行输入页数,第四行输入每页最大数据个数


输出描述:
输出该页应该显示的数据,超出范围请输出'超过分页范围'
示例1

输入

6
1 2 3 4 5 6
1
2

输出

3
4
贴个Java的, 神他喵分页从0开始, 第0页,第1页,第2页.....
import java.util.Scanner;  public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int total = scanner.nextInt();
        int[] irr = new int[total];
        for (int i = 0; i < total; i++) {
            irr[i] = scanner.nextInt();
        }
        int p = scanner.nextInt();
        int size = scanner.nextInt();
        int page = (total - 1) / size + 1;
        if (p > page -1)
            System.out.println("超过分页范围");
        else {
            int start = p * size, end = start + size > total ? total : start + size;
            for (int i = start; i < end; i++)
                System.out.println(irr[i]);
        }
    }
}



编辑于 2018-06-19 23:37:05 回复(0)
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n, m, k;
    scanf("%d", &n);
    int a[n];
    for(int i=0;i<n;i++)
        scanf("%d", &a[i]);
    scanf("%d%d", &m, &k);
    if(m > n/k-1)
        puts("超过分页范围");
    else
        for(int i=m*k;i<(m+1)*k;i++)
            printf("%d\n", a[i]);
    return 0;
}

发表于 2020-11-23 23:48:35 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] nums = new int[n+5];
        for (int i = 0; i!=n; i++) {
            nums[i] = sc.nextInt();
        }
        int pageNumber = sc.nextInt();
        int pageCapacity = sc.nextInt();
        if ((n + pageCapacity - 1) / pageCapacity < pageNumber) {
            System.out.println("超过分页范围");
            return;
        }
        StringBuilder sb = new StringBuilder();
        for (int i=pageNumber*pageCapacity; i < Math.min(pageCapacity*(pageNumber+1), n); i++) {
            sb.append(nums[i]);
            sb.append("\n");
        }
        System.out.print(sb.toString());
        return;
    }
}
发表于 2019-02-11 01:46:18 回复(0)
// 数据分页说明.cpp 
//-_-||题目半天没看懂
//后面发现就是类似于将数组存入内存中,内存分页大小固定,让输出给定页号的内容。

#include <iostream>
using namespace std;
int main()
{
    int n;
    while (cin >> n) {
        int *arr = new int[n];
        for (int i = 0; i < n; ++i)
            cin >> arr[i];
        int page, num;
        cin >> page >> num;
        if (page > n / num - 1) {
            cout << "超过分页范围" << endl;
            continue;
        }
        for (int i = page * num; i < page * num + num; ++i)
            cout << arr[i] << endl;
        delete[]arr;
    }
    return 0;
}
发表于 2018-05-23 18:29:08 回复(0)
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    arr:=make([]int,n)
    for i:=0;i<n;i++{
        fmt.Scan(&arr[i])
    }
    var page,cnt int
    fmt.Scan(&page,&cnt)
    ans:=arr[cnt*page:cnt*page+cnt]
    for _,x:=range ans{
        fmt.Println(x)
    }
}

发表于 2023-03-20 21:34:26 回复(0)
dn = int(input())
data = list(map(int, input().split()))
dp = int(input())
pn = int(input())
# 根据题意每一页的数据量是固定的
if dp*pn >= dn:
    print('超过分页范围')
else:
    for i in data[dp*pn:dp*pn+pn]:
        print(i)
发表于 2019-08-06 23:52:42 回复(0)
while True:
    try:
        n=int(input().strip())
        inp=list(map(int,input().strip().split(' ')))
        ye=int(input().strip())
        num=int(input().strip())
        num_ye=n//num
        if n%num!=0 and num_ye==ye:
            print('超过分页范围')
        else:
            for i in range(num_ye+1):
                if i>ye:
                    #print(i)
                    break
                else:
                    re=inp[0:num]
                    #print(re)
                    inp=inp[num:]
        for i in re:
            print(i)

    except:
        break
发表于 2019-07-28 09:28:13 回复(0)
这题在说啥???啊?页数从0开始吗?输出又是怎么肥四??😂
发表于 2019-06-13 15:15:42 回复(0)
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        
        for(int i=0;i<n;i++){
            arr[i]=scanner.nextInt();
        }
//        
//        for(int i=0;i<arr.length;i++)
//            System.out.println(arr[i]);
//        
        int page = scanner.nextInt();    //页数
        int pageSize = scanner.nextInt();    //页面数据个数
        for(int i=page*pageSize,j=0;j < pageSize&& i < arr.length;j++,i++){
            System.out.println(arr[i]);
        }
    }
}

一看  就明白了。
发表于 2019-05-24 19:14:52 回复(0)
题目真难读懂
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int[] arrs=new int[n];
        for(int i=0;i<n;i++){
            arrs[i]=sc.nextInt();
        }
        int target=sc.nextInt();
        int count=sc.nextInt();
        getResult(n,arrs,target,count);
    }
    
    private static void getResult(int n,int[] arrs,int target,int count){
        
        if((target+1)*count>n){
            System.out.println("超出分页范围");
            return;
        }
        
        for(int i=0;i<count;i++){
            if((target*count+i)<n){
                System.out.println(arrs[target*count+i]);
            }
        }
   }
}

发表于 2019-05-10 19:34:28 回复(0)
注意页码从0,开始 #include <iostream> #include <vector> using namespace std; int main() {     int sum,pn,num,mid;     vector <int> da;     cin>>sum;     for(int i=0;i<sum;i++)     {         cin>>mid;         da.push_back(mid);     }     cin>>pn>>num;     if(pn*num+num>sum)     {         cout<<"超过分页范围"<<endl;     }     else     {         for(int i=pn*num;i<pn*num+num;i++)         {             cout<<da[i]<<endl;         }     }     return 0; }

编辑于 2019-05-08 19:18:45 回复(0)
一道页数计算从0页开始的题目。
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
    int inum, pagenum, pagemax, itemp;
    cin >> inum;
    vector<int> data(inum);
    for (int i = 0; i < inum; i++)
        {
        cin >> itemp;
        data[i] = itemp;
    }
    cin >> pagenum >> pagemax;
    if ((pagenum+1)*pagemax > data.size())
        cout << "超过分页范围" << endl;
    else
        for (int i = 0, j = pagenum*pagemax; i < pagemax; i++,j++)
            cout << data[j] << endl;
    return 0;
}

发表于 2019-05-05 12:34:00 回复(0)
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i, n, page, page_num;
    int *data = NULL;
    
    scanf("%d",&n);
    data = (int *)malloc(n*sizeof(int));
    
    for(i=0; i<n; i++)
    {
        scanf("%d", &data[i]);
    }
    scanf("%d%d",&page,&page_num);
    
    if((page+1) * page_num > n)
    {
        printf("超过分页范围\n");
    }
    else
    {
        for(i=page*page_num; i<(page+1)*page_num&&i<n; i++)
        {
            printf("%d\n",data[i]);
        }
    }
    return 0;
}

发表于 2019-05-03 20:39:01 回复(0)
#include<iostream>
#include<vector>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        vector<int>data(n);
        for(int i=0;i<n;i++){
            cin>>data[i];
        }
        int page,num;
        cin>>page>>num;
        for(int i=page*num;i<(page+1)*num;i++){
            cout<<data[i]<<endl;
        }
    }
    return 0;
}

//这题目表述***
发表于 2019-04-11 15:11:45 回复(0)
最后一页如果不满如何解决?
发表于 2019-03-07 11:25:04 回复(1)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author wylu
 */
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        String[] datas = br.readLine().split(" ");
        int curPage = Integer.parseInt(br.readLine());
        int pageSize = Integer.parseInt(br.readLine());

        if (curPage > n / pageSize - 1) {
            System.out.println("超过分页范围");
        } else {
            for (int i = curPage * pageSize; i < Math.min(n, (curPage + 1) * pageSize); i++) {
                System.out.println(datas[i]);
            }
        }
    }
}

发表于 2019-01-22 22:07:13 回复(0)
居然没有最后一页不满的测试。
发表于 2018-09-26 23:46:07 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if(sc.hasNext()) {
                list.add(sc.nextInt());
            }
        }
        
        int pageNo = sc.nextInt();
        int pageSize = sc.nextInt();
        sc.close();
        int pages = (n - 1) / pageSize + 1;
        if(pageNo < 0 || pageNo > pages) {
            System.out.println("超过分页范围");
        } else {
            int s = pageNo * pageSize;
            for(int i = s; i < s + pageSize; i++) {
                System.out.println(list.get(i));
            }
        }
    }
}
这题有点坑,页码竟然是从0开始算
发表于 2018-05-25 00:31:15 回复(0)
根据题目,页数是从0开始的。。。。。。。。。。。
发表于 2018-05-24 01:08:46 回复(0)
import java.util.Scanner;
 
/**
* 没什么难点,有个细节就是在尾页的时候,输出不一定要等于每页的元素个数。
 * @author moci
 * @create 2018-05-22 16:30
 **/
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int[] data = new int[num];
        for (int i = 0; i < num; i++) {
            data[i] = sc.nextInt();
        }
        int page = sc.nextInt();
        int pageNumber = sc.nextInt();
        sc.close();
        if(num<=0||num<page*pageNumber) System.out.println("超出范围");
        else {
            run(data,num,page,pageNumber);
        }
    }
 
    static void run (int[] data,int num,int page,int pageNumber){
        int root = page*pageNumber;
        for (int i = 0; i < pageNumber; i++) {
            System.out.println(data[root++]);
            if(root>=num) return;
        }
    }

发表于 2018-05-23 20:33:04 回复(1)