HDU 1719 Friend

Problem Description

Friend number are defined recursively as follows. 
(1) numbers 1 and 2 are friend number; 
(2) if a and b are friend numbers, so is ab+a+b; 
(3) only the numbers defined in (1) and (2) are friend number. 
Now your task is to judge whether an integer is a friend number.

Input

There are several lines in input, each line has a nunnegative integer a, 0<=a<=2^30.

Output

For the number a on each line of the input, if a is a friend number, output “YES!”, otherwise output “NO!”.

Sample Input


13121 
12131

Sample Output

YES! 
YES! 
NO!

题目大意:

问输入一个数是否为朋友数。下面是朋友数的定义: 
1. 1和2为朋友数 
2. 如果有一个朋友数为,另一个为b,那么a*b+a+b也是朋友数 
3. 满足上面的两个条件的所有情况都为朋友数 
是朋友数输出“YES!”,不是输出“NO!”。

C++

/*&同为1为1,|同为0为0。假如a和b都为朋友数,那么可以通过a*b+a+b得到另一个朋友数c。我们可以将其列出来:
a*b+a+b = c; -   (a+1)(b+1) = c+1;
a和b起初只有1和2。那么就可以看出来,一个朋友数c,加上1,肯定是2或3的倍数。输入一个数n,通过不断地对(n+1)除等3和2,最后如果得到的结果为1,那么就可以证明c为朋友数。
注意:0不为朋友数。*/
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    int a;
    while(~scanf("%d", &a))
    {
        if(a == 0)
        {
            cout << "NO!" << endl;
            continue;
        }

        int t = a + 1;
        while(t%2 == 0 || t%3 == 0)
        {
            if(t % 2 == 0)
            {
                t /= 2;
                continue;
            }
            if(t % 3 == 0)
            {
                t /= 3;
                continue;
            }
        }
        if(t == 1)
            cout << "YES!" << endl;
        else
            cout << "NO!" << endl;
    }
    return 0;
}





全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
最近又搬回宿舍了,在工位坐不住,写一写秋招起伏不断的心态变化,也算对自己心态的一些思考表演式学习从开始为实习准备的时候就特别焦虑,楼主一开始选择的是cpp后端,但是24届这个方向已经炸了,同时自己又因为本科非92且非科班,所以感到机会更加迷茫。在某天晚上用java写出hello&nbsp;world并失眠一整晚后选择老本行干嵌入式。理想是美好的,现实情况是每天忙但又没有实质性进展,总是在配环境,调工具,顺带还要推科研。而这时候才发现自己一直在表演式学习,徘徊在设想如何展开工作的循环里,导致没有实质性进展。现在看来当时如果把精力专注在动手写而不是两只手端着看教程,基本功或许不会那么差。实习的焦虑5月,楼主...
耶比:哲学上有一个问题,玛丽的房间:玛丽知道眼睛识别色彩的原理知道各种颜色,但是她生活在黑白的房间里,直到有一天玛丽的房门打开了她亲眼看到了颜色,才知道什么是色彩。我现在最大可能的减少对非工作事情的思考,如果有一件事困扰了我, 能解决的我就直接做(去哪里或者和谁吵架等等……),解决不了的我就不想了,每一天都是最年轻的一天,珍惜今天吧
投递比亚迪等公司10个岗位 > 秋招被确诊为…… 牛客创作赏金赛
点赞 评论 收藏
分享
10-11 17:30
湖南大学 C++
我已成为0offer的糕手:羡慕
点赞 评论 收藏
分享
11-24 11:23
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务