• CF 50E. Square Equation Roots


    思路:这题的关键就是重复根只可能是整数。

    这样先求出所有的根的数目,在减去重复的根。

    代码如下:

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <cmath>
     5 #define ll long long
     6 using namespace std;
     7 bool f[6000005];
     8 int main(){
     9     ll n,m;
    10     scanf("%I64d%I64d",&n,&m);
    11     ll ans=0;
    12     memset(f,0,sizeof(f));
    13     for(ll b=1;b<=n;b++){
    14         ans+=min(2*m,b*b*2);
    15         ll b2=b*b;
    16         for(ll c=b-1;c>=0;c--){
    17             if(b2-c*c>m) break;
    18             if(f[b-c]) ans--;
    19             else f[b-c]=1;
    20             if(f[b+c]) ans--;
    21             else f[b+c]=1;
    22         }
    23     }
    24     printf("%I64d
    ",ans);
    25     return 0;
    26 }
    View Code
  • 相关阅读:
    jQuery基础一
    JavaScript基础三
    JavaScript基础二
    JavaScript基础一
    POJ
    UVA
    HDU
    Gym
    POJ
    HDU
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3349956.html
Copyright © 2020-2023  润新知