POJ 3993 / HDU 3353

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 3993 / HDU 3353相关的知识,希望对你有一定的参考价值。

题意:没看懂,实验室的队友们6翻了。

大体就是,打一个素数表,然后把这个数分解了。最后问的是有多少个不同的指数,和两个数之间的距离,也就是指数之差的和。

 

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
const int maxn=1123456;
int prime[maxn];
int vis[maxn];

int init(int n)
{
    memset(vis,0,sizeof(vis));
    int len=0;
    for(int i=2; i<n; i++)//
    {
        if(vis[i]==0)
        {
            prime[len++]=i;
            for(int j=i*2; j<maxn; j+=i)
            {
                vis[j]=1;
            }
        }
    }
    return len;
}
const int maxm=88000;

void solve(int n,int *s)
{
    for(int i=0;i<maxm;i++)
    {
        s[i]=0;
    }
    int pos=0;
    while(n!=1)
    {
        while(n%prime[pos]==0)//
        {
            n/=prime[pos];
            s[pos]++;
        }
        pos++;
    }
}
int A[maxm],B[maxm];
int main()
{
    int a,b;
    int lener=init(maxn);
    int cas=1;
    while(~scanf("%d%d",&a,&b)&&(a||b))
    {
        solve(a,A);
        solve(b,B);
        int dis=0;
        int d=0;
        for(int i=0; i<lener; i++)
        {
            if(A[i]||B[i])
            {
                d++;
                dis+=abs(A[i]-B[i]);
            }
        }
        printf("%d. %d:%d\n",cas++,d,dis);
    }
    return 0;
}

 

以上是关于POJ 3993 / HDU 3353的主要内容,如果未能解决你的问题,请参考以下文章

HDU 3123-GCC(递推)

ACM图论—最小环问题 ( 仔细分析+理解+代码 )(HDU 1599 ) (POJ 1743)

POJ3528 HDU3662 三维凸包模板

hdu1159 poj1458 LCS裸题

2019年7月做题记录

hdu杭电1671 / poj3630 字典树