题解 | #优雅的点-mp查平方差#

优雅的点

http://www.nowcoder.com/practice/0960cb46233b446687b77facc9148b89

//if(mp.find(N-it->first)!=mp.end()) //不是说没有访问map<int,bool> 的 map[i] ,map[i]就是false //双for超时了

#include<iostream>
#include<map>
using namespace std;

int main(void)
{
    int N;
    cin>>N;
    int r = (int)sqrt(N);
    
    int count=0;
    
    if(pow(r,2)<N) r+=1;
    
    map<int,bool> mp;
    
    for(int i=1;i<=r;i++) mp[pow(i,2)]==true;
    
    for(map<int,bool>::iterator it=mp.begin();it!=mp.end();it++)
        if(mp.find(N-it->first)!=mp.end()) 
            count++;

    if(pow(r,2)==N) count++;
    cout<<4*count<<endl;;
    
    return 0;
    
}
全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务