求助,2个点RE
查看原帖
求助,2个点RE
246099
dalao_see_me楼主2021/2/2 18:31

RT,上代码。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1000086;
int n,tot=0,ans=1;
int q[N];
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
	return x*f;
}
inline void yueshu(){
	for(int i=2;i*i<=n;i++)
		if(n%i==0){
			tot++;
			while(n%i==0){
				q[tot]++;
				n/=i;
			}
		}
	if(n!=1)q[++tot]=1;
	for(int i=1;i<=tot;i++)q[i]*=2;
}
signed main(){
	n=read();
	yueshu();
	for(int i=1;i<=n;i++)ans*=q[i]+1;
	printf("%lld",ans+1>>1);
	return 0;
}
2021/2/2 18:31
加载中...