1 条题解

  • 0
    @ 2022-7-13 21:45:04
    #include<iostream>
    #include<cmath>
    using namespace std;
    bool isp(int x){
    	if(x<2) return false;
    	if(x==2) return true;
    	if(x%2==0) return false;
    	for(int i=3;i*i<=x;i+=2){
    		if(x%i==0) return false;
    	}
    	return true;
    }
    int n,ans=4,cnt;
    void getaway(int &num,int pri){
    	while(num%pri==0) num/=pri;
    	return;
    }
    int main(){
    	cin>>n;
    	getaway(n,2);
    	int sq=sqrt(n)+0.01;
    	for(int i=3;i<=2*sq+1;i+=2){
    		cnt=0;
    		if(i%4==3) getaway(n,i);
    		else if(i%4==1){
    			while(n%i==0){
    				n/=i;cnt++;
    			}
    		}
    		ans*=cnt*2+1;
    	}
    	if(n!=1&&n%4==1) ans*=3;
    	cout<<ans<<endl;return 0; 
    }
    

    https://www.luogu.com.cn/record/64379685

    • 1

    信息

    ID
    1456
    时间
    1000ms
    内存
    125MiB
    难度
    6
    标签
    递交数
    4
    已通过
    4
    上传者