洛谷2508 [HAOI2008]圆上的整点

Luogu

BZOJ

分析

神仙题。看完[这个]你就会了。

如果没看过怎么办?直接弃疗

代码

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>
#define re register
typedef int mainint;
#define int long long
using namespace std;

inline int read() {
    int X=0,w=1; char c=getchar();
    while (c<'0'||c>'9') { if (c=='-') w=-1; c=getchar(); }
    while (c>='0'&&c<='9') X=X*10+c-'0',c=getchar();
    return X*w;
}

const double EPS=1e-7;

inline int gcd(int a,int b) { return a%b?gcd(b,a%b):b; }

mainint main() {
    int R=read(),ans=1;
    for (re int p=2;p*p<=R;++p) {
        if (R%p) continue;
        int c=0; while (R%p==0) R/=p,++c;
        if (p%4==1) ans*=2*c+1;
    }
    if (R>1&&R%4==1) ans*=3;
    printf("%lld\n",ans*4);
    return 0;
}
最后修改:2019 年 05 月 26 日 03 : 38 PM

发表评论