中文题题意就不解释了,,,,,
1/k=1/(c+k)+1/(d+k)
化简知道k*k的因数个数就是解。。。。(怎么想到的呢,,,先是想到所有素数都是2,,,,,之后又想到肯定和分解质因数有关,,就这样了)
(当然我不会说我想了好久最后还是找了题解。。。。)
分解素数这块
一直觉得自己会,,,,比赛的时候做题的时候都写不出来。。也不知道为啥。。。。。。。。。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include<bits/stdc++.h>
int isprime[65536];
int prm[6100];
int k;
void getprme()
{
int i,j,k;
for(i=0;i<65536;i++) isprime[i]=1;
isprime[0]=isprime[1]=0;
k=0;
for(i=2;i<65536;i++)
{
if(isprime[i]){
prm[k++]=i;
for(j=i+i;j<65536;j+=i)
{
isprime[j]=0;
}
}
}
}
int fenjie(int n){
int i,zn,j,ans=1;
for(i = 0;prm[i]<=n;i++)
{
zn=prm[i];
if(n%zn==0){
j=1;
n/=zn;
while(!(n%zn)){
n/=zn;j++;
}
ans*=((j<<1)+1);
}
}
return ans+1;
}
int main()
{
long long int n;
getprme();
while(~scanf("%lld",&n)){
if(n==1)printf("1\n");
else printf("%d\n",fenjie(n)>>1);
}
return 0;
}