LightOJ 1236

来源:互联网 发布:苹果手机搞怪软件 编辑:程序博客网 时间:2024/06/06 10:02

题目描述:

点击打开链接

分析题目,在n以内找i,j两数使lcm(i,j)=n,那么i,j必然是n的约数,将n质因子分解成n=p1^e1*p2^e2*....pn^an;则i,j也必然可以分解成这种形式;i=p1^i1*p2^i2....pn^in,j=p1^j1*p2^j2....pn^jn;对于任意的i,j对于所有数的指数满足ex=max(ix,jx),此时lcm(i,j)=n,那么符合lcm(i,j)=n的情况我们就只需要分析n的质因子组成就够了,对于p1,如果让i1=e1的话对于j1就可以选择0-e1中的(e1+1)个数,对于j1=e1时i1也有(e1+1)种选法,这其中i1=j1=e1的方案被选择两次,所以对于p1的选择方案就有2*(e1+1)-1=2*e1+1种,将p的结果累乘起来就是总方案数,但是这方案中对于同样的(i,j)组合,(i,j)和(j,i)是被计算了两次的,而按照题目描述这种情况是只计算一次的,所以最后的结果要除以2。

AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<stack>#include<queue>#include<algorithm>#include<map>using namespace std;const int INF=0x3f3f3f3f;const int MAXM=10000010;long long n;bool prime[MAXM+10];long long rec[MAXM/10], cnt;void init_prime_table(){    memset(prime,true,sizeof(prime));    cnt=0;    prime[0]=prime[1]=false;    for (long long i = 2; i<=MAXM; ++i)    {        if (prime[i])            rec[cnt++] = i;        for (long long j =0;j<cnt&&rec[j]<=MAXM/i;++j)        {            prime[i*rec[j]]=false;            if (i%rec[j]==0)                break;        }    }}int main(){    int T;    scanf("%d",&T);    int p=1;    init_prime_table();    while(T--)    {        scanf("%lld",&n);        long long ans=1;        for (int i=0;i<cnt;i++)        {            if (rec[i]*rec[i]>n) break;            int e=0;            if (n%rec[i]==0)            {                while(n%rec[i]==0)                {                    n=n/rec[i];                    e++;                }                ans*=(2*e+1);            }        }        if (n>1) ans*=(2*1+1);        //printf("%I64d\n",ans);        printf("Case %d: %lld\n",p,ans/2+1);        p++;    }    return 0;}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 阳光惠生活登录密码忘了怎么办 一个身份证注册了两个支付宝怎么办 买手办拆了发现坏了怎么办 六个月宝宝喝贝因美过敏怎么办 超市盘点少的货扣员工工资怎么办 孩子东西在学校被偷了怎么办 想退出却不舍的感情不知怎么办? 我被老板摸全身失眠有阴影怎么办 不知道绑定支付宝的微博账号怎么办 银行卡丢了补办后支付宝账户怎么办 未激活的银行卡被锁定了怎么办 手机网银上的钱被盗走了怎么办 支付宝支付失败银行卡扣了钱怎么办 小程序的二次验证码丢失怎么办 苹果手机不小心购买游戏币怎么办 在淘宝买的洗衣粉是假的怎么办 京东快递电话填错了怎么办 新买的手机卡被注册过支付宝怎么办 手机卡掉了别人登陆支付宝怎么办 手机卡注销了支付宝欠的钱怎么办 手机丢了支付宝和微信里的钱怎么办 新办的手机号已被注册支付宝怎么办 新办的移动卡不能注册支付宝怎么办 新办的宝卡支付宝注册过怎么办 办支付宝后银行卡被盗刷怎么办 微信扫二维码送平衡群发了怎么办车 拼多多没收到货点了确认收货怎么办 拼多多收货地址填错了怎么办 京东订单申请退款已发货怎么办 手机播放声音的地方进水了怎么办 手机出声音的地方进水了怎么办 手机听声音的地方进水了怎么办 装修公司我只要基装她不肯怎么办 雄迈未来家庭忘记账号和密码怎么办 地方文件和国家政策有冲突怎么办? 网上贷款放款成功没有到账怎么办 我来贷放款中不到账怎么办 手持身份证被别人网贷了怎么办 身份证被别人做了网贷怎么办 身份证丢了被别人网贷了怎么办 户口身份证被注销了网贷怎么办