zoukankan      html  css  js  c++  java
  • 计蒜客-等差数列

    一个等差数列是一个能表示成 a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)a,a+b,a+2b,...,a+nb(n=0,1,2,3,...)的数列。

    在这个问题中 aa 是一个非负的整数,bb 是正整数。写一个程序来找出在双平方数集合(双平方数集合是所有能表示成 p^2+q^2p2+q2 的数的集合) SS 中长度为 nn 的等差数列。

    输入格式

    输入包括两行,第一行为 N(3 leq N leq 25)N(3N25) 要找的等差数列的长度。第二行是找到的双平方数 pp 和 qq 的上界 M(0 leq p,q leq M)M(0p,qM)。

    输出格式

    输出一行或者多行,如果没有找到数列,输出NONE。否则输出一个整数对a b(这些行应该先按 bb 排序再按 aa 排序)

    样例输入

    5
    7

    样例输出

    1 4
    37 4
    2 8
    29 8
    1 12
    5 12
    13 12
    17 12
    5 20
    2 24
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 2500;
    bool in[maxn * maxn + 10];
    int main()
    {
    
        ios::sync_with_stdio(false), cin.tie(0);
        int N;
        cin >> N;
        int M;
        cin >> M;
        in[0] = 1;
        //预处理双平方数
        for (int i = 0; i <= M; i++)
        {
            for (int j = 0; j <= M; j++)
            {
                in[i * i + j * j] = 1;
            }
        }
        int max_i = M * M * 2;
        vector<pair<int, int> >res;
        int i;
        for (int a = 0; a <= max_i; a++)
        {   
            //因为a是一个常量在任何a+i*b=p^2+q^2成立所以i=0时也应成立所以a也应为双平方数,去掉也能ac但是时间会增加
            if (!in[a])continue;
            for (int b = 1; a + (N - 1)*b <= max_i; b++)
            {
                for (i = 0; i < N; i++)
                {
                    if (!in[a + i * b])
                        break;
                }
                if (i == N)
                    res.push_back(make_pair(b, a));
            }
        }
        if (res.empty())
        {
            cout << "NONE" << endl;
            return 0;
        }
        sort(res.begin(), res.end());
        N = res.size();
        for (int i = 0; i < N; i++)
        {
            cout << res[i].second << " " << res[i].first << endl;
        }
       return 0;
    }
    View Code
  • 相关阅读:
    Vim 使用设置
    stm32之CAN发送、接收详解
    stm32内部的CAN总线
    stm32之CAN总线基础
    JavaScript之Ajax
    JavaScript之insertBefore()和自定义insertAfter()的用法。
    JavaScript之向文档中添加元素和内容的方法
    JavaScript之共享onload
    JavaScrtip之JS最佳实践
    XX秘籍
  • 原文地址:https://www.cnblogs.com/kuroko-ghh/p/9818968.html
Copyright © 2011-2022 走看看