hdu 1719 Friend

题意:

        1).1和2是朋友数。

        2).如果a和b是朋友数,那么a+b+ab也是朋友数。

        3).当且仅当满足(1)或(2)的情形才能判定X是朋友数。(0<=X<=2^30)

题解:

       观察任意x+1=c+d+cd+1=(c+1)*(d+1)

       原始的朋友数只有1,2;c+1,d+1一定为2或3的倍数

#include<stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
        {
            printf("NO!\n");
            continue;
        }
        n++;
        while(n%3==0)
            n/=3;
        while(n%2==0)
            n/=2;
        if(n==1)
        printf("YES!\n");
        else
        printf("NO!\n");
    }
    return 0;
}

       

原文地址:https://www.cnblogs.com/XDJjy/p/3106101.html