[lcm本质] light oj 1236 Pairs Forming LCM
来源:互联网 发布:32k单片机 编辑:程序博客网 时间:2024/06/11 10:05
long long pairsFormLCM( int n ) {
long long res = 0;
for( int i = 1; i <= n; i++ )
for( int j = i; j <= n; j++ )
if( lcm(i, j) == n ) res++; // lcm means least common multiple
return res;
long long res = 0;
for( int i = 1; i <= n; i++ )
for( int j = i; j <= n; j++ )
if( lcm(i, j) == n ) res++; // lcm means least common multiple
return res;
}
题意:
就是求1~n之间,两两最小公倍数等于n的个数。
思路:
设lcm(A,B)=M
设分解质因数之后:
A=x^a1+y^a2+z^a3+......
B=x^b1+y^b2+z^b3+......
M=x^c1+y^c2+z^c3+......
因为M是A和B的最小公倍数,所以对每个质因数都会有max(ai ,bi)=ci
比如设ci=2,那么就有以下几种情况:
ai=2 , bi=2 ai=2 , bi=1 ai=2 , bi=0
ai=1 , bi=2 ai=0 , bi=2
所以对于每个ci,所能创造的数量就是2*ci-1,全部乘起来就是总数了。
代码:
#include"cstdio"#include"cstring"#include"cmath"#include"cstdlib"#include"algorithm"#include"iostream"#include"map"#include"queue"#define ll long longusing namespace std;#define MAXN 10000007bool mark[MAXN];int ss[MAXN/10],sscnt;void ssb(){ sscnt=0; memset(mark,false,sizeof(mark)); mark[0]=mark[1]=true; for(int i=2; i<=MAXN; i++) { if(!mark[i]) { for(int j=i+i; j<=MAXN; j+=i) mark[j]=true; ss[sscnt++]=i; } } return ;}int main(){ int t,cas=1; cin>>t; ssb(); while(t--) { ll n; ll ans=1; scanf("%lld",&n); for(int i=0;i<sscnt;i++) { if((ll)ss[i]*ss[i]>n) break; if(n%ss[i]==0) { int tep=0; while(n%ss[i]==0) { tep++; n/=ss[i]; } ans*=2*tep+1; } } if(n!=1) ans*=3; printf("Case %d: %lld\n",cas++,(ans+1)/2); } return 0;}
0 0
- [lcm本质] light oj 1236 Pairs Forming LCM
- Light OJ 1236 Pairs Forming LCM
- light oj 1236 Pairs Forming LCM(整数分解)
- lOJ 1236 - Pairs Forming LCM
- lightOJ 1236 Pairs Forming LCM
- LightOJ 1236 Pairs Forming LCM
- LightOJ 1236Pairs Forming LCM
- lightoj 1236 - Pairs Forming LCM
- LightOJ 1236 Pairs Forming LCM
- Pairs Forming LCM LightOJ
- Pairs Forming LCM
- LightOJ1236 Pairs Forming LCM
- Pairs Forming LCM LightOJ
- LightOJ 1236 Pairs Forming LCM【整数分解】
- LightOJ - 1236 Pairs Forming LCM 合数分解
- LightOJ 1236 - Pairs Forming LCM (LCM·唯一分解)
- Pairs Forming LCM(素因子分解+lcm)
- H - Pairs Forming LCM Light1236
- 十二个非常有用的Flex函数Source In Flex(转)
- php中的session cookie 记住密码基本原理 浏览器退出登录后保持状态
- CocoaPods详解之----使用篇
- KMP 算法之得到next的代码
- 字节码内容理解
- [lcm本质] light oj 1236 Pairs Forming LCM
- 单例模式:为什么要双重检测
- linux配置java环境变量(详细)
- cocoapods 安装和使用
- mac下brew命令的安装
- Leetcode:Count and Say
- selenium:selenium-safari-driver
- 移除Flex被验证控件的红边框和错误Tip提示
- Jboss log configuration file