zoukankan      html  css  js  c++  java
  • HDU-1719 Friend

    刚开始想打个表...

    结果我发现我理解错了题目意思,以为a,b必须是两个不同的数字,然后完全无法理解样例的3为什么是friend number...很尴尬就只能去网上找题解,才发现a,b可以相等(太菜了

    其实打表也能做,但是实在是懒,这道题由于n = a * b + a + b -> n + 1 = (a + 1)(b + 1),我们假设这个数列是{n + 1},那里面任意一个元素都等于这个数列中原来两个数的乘积,又因为它们开始都是2, 3,所以质因数只有2, 3就是Friend number,然后就很好判断了,我这里偷懒用了a & (-a)是否等于a来判断是不是2的倍数

    #include <cstdio>
    using namespace std;
    int main() {
        int a;
        while (~scanf("%d", &a)) {
            if (a == 0) {
                puts("NO!");
                continue;
            }
            a = a + 1;
            while (a % 3 == 0) {
                a = a / 3;
            }
            if ((a & (-a)) == a)
                puts("YES!");
            else
                puts("NO!");
        }
        return 0;
    }
  • 相关阅读:
    Blender基础操作
    反汇编及linux下edb的下载
    混淆矩阵(confusion_matrix)含义
    Python大数据第三次的作业
    Python的DataFrame基础使用
    Python数据标准化
    爬虫之xpath
    luffy项目上线
    爬虫之selenium
    celery
  • 原文地址:https://www.cnblogs.com/cminus/p/11999877.html
Copyright © 2011-2022 走看看