Welcome to Lewi|

LEWISAK

园龄:10个月粉丝:13关注:10

LightOJ - 1236 Pairs Forming LCM题解😎😎😎

我们设n=x1t1x2t2...xmtm

令:

lcm(a,b)=na=x1a1x2a2...xmamb=x1b1x2b2...xmbm

那么,很明显

(☝xzz大佬说的)

对于任意的imax(ai,bi)=ti

也就是说,aibi中必有一个为ti

那么方法就有2(ti)(ti+1)()1(ti)

贴代码!

#include<bits/stdc++.h>
#define int long long
using namespace std;
int biao[10000100],vis[10000100];
int n,t,cnt,num;
unsigned long long ans=1;
signed main(){
	for(int i=2;i<=1e7;i++){
		if(!vis[i]){
			biao[++cnt]=i;
		}
		for(int j=1;i*biao[j]<=1e7;j++){
			vis[i*biao[j]]=1;
			if(biao[j]%i==0){
				break;
			}
		}
	}
	cin>>t;
	while(t--){
		cin>>n;
		ans=1;
		for(int i=1;i<=cnt;i++){
			if(biao[i]*biao[i]>n){
				break;
			}
			if(n%biao[i]==0){
				int cntt=0;
				while(n%biao[i]==0){
					cntt++;
					n/=biao[i];
				}
				ans*=(cntt*2+1);
			}
		}
		if(n!=1){
			ans*=3;
		}
		cout<<"Case "<<++num<<": "<<ans/2+1<<endl;
	}
	
	return 0;
}

本文作者:LEWISAK

本文链接:https://www.cnblogs.com/lewisak/p/18146984

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   LEWISAK  阅读(28)  评论(0编辑  收藏  举报
/
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起