• 计蒜客-等差数列


    一个等差数列是一个能表示成 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
  • 相关阅读:
    深浅复制
    iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置)
    iPhone 启动页尺寸
    AVAssetDownloadURLSession 简述
    iOS性能优化
    测试用例编写
    flutter_boot android和flutter源码阅读记录
    com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    android sdk tools里找不到draw9patch.bat 如何制作.9.png 格式图片
    排球比赛计分系统
  • 原文地址:https://www.cnblogs.com/kuroko-ghh/p/9818968.html
Copyright © 2020-2023  润新知