zoukankan      html  css  js  c++  java
  • [USACO1.4] Arithmetic Progressions

    定义双平方数为可以表示为两个自然数的平方和的数。要求找出双平方数集合中的所有等差数列。给定 (n) 为数列长度,(m)(p^2+q^2)(p,q) 的上界

    Solution

    首先筛出所有双平方数,然后枚举数列的第一项和第二项,暴力判断即可

    复杂度为 (O(nalpha(m^2)^2))

    #include <bits/stdc++.h>
    using namespace std;
    
    int n,m,isp[1000005];
    
    struct pii {
        int x,y;
        bool operator < (const pii &b) const {
            if(y==b.y) return x<b.x;
            return y<b.y;
        }
    };
    
    vector <pii> v;
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>n>>m;
        for(int i=0;i<=m;i++) {
            for(int j=0;j<=m;j++) {
                isp[i*i+j*j]=1;
            }
        }
        for(int i=0;i<=2*m*m;i++) {
            if(isp[i]==0) continue;
            for(int j=i+1;j<=min(2*m*m,4*m*m/n+i);j++) {
                if(isp[j]==0) continue;
                int d=j-i;
                int mx=i+(n-1)*d;
                if(mx>2*m*m) break;
                int flag=1;
                for(int k=3;k<=n;k++) {
                    int x=i+k*d-d;
                    if(isp[x]==0) {
                        flag=0;
                        break;
                    }
                }
                if(flag) v.push_back({i,d});
            }
        }
        sort(v.begin(),v.end());
        for(pii p:v) cout<<p.x<<" "<<p.y<<endl;
        if(v.begin()==v.end()) cout<<"NONE"<<endl;
    }
    
    
  • 相关阅读:
    spring总结
    mybatis总结
    HttpClient,okhttp,Jodd-http 使用上的差异
    RPC序列化
    RPC是什么? (学习笔记)
    MySQL普通索引与唯一索引
    MySQL 存储引擎
    TCP的流量控制和拥塞控制
    【转载】Windows自带.NET Framework版本大全
    [知识点] 总目录
  • 原文地址:https://www.cnblogs.com/mollnn/p/12486300.html
Copyright © 2011-2022 走看看