H - Salmon And Cat
Problem Description
Math is very important, for those who are also in school, make sure you will learn more about math.
Salmon and Cat are good friends.Today Salmon ask Cat to help her judge whether a number is perfect or not. Perfect number is a kind of number defined by like this.
First, 1 and 3 are perfect number.Then if a and b are perfect numbers, 2+ab+2a+2b is also a perfect number.For example, 1 and 1 are perfect numbers, so 2+1+2+2 = 7 is perfect number.
If Cat can't help Salmon, Salmon will be sad and Cat will be much more sad. So Cat must solve the problem to maintain their friendship. Can you help Cat to solve the problem?
Input
This problem contains multiple test cases.
Each test case contains one line.
Each line contains an interger n, 1 <= n <= 10^9.
Output
For each test case, if n is a perfect number, output “Yes”, otherwise output “No”.
Sample Input
3
7
8
Sample Output
Yes
Yes
No
Hint
意解:易知偶数不是完美数;
假设c为完美数,则c = 2+ab+2a+2b;
c + 2 = 2+ab+2a+2b + 2 = (a + 2) * (b + 2);
因为一开始只有1和3为完美数,所以完美数类似于 c + 2 = (3 ^ x) * (5 ^ y)这种形式.
AC代码:
/*
* this code is made by eagle
* Problem: 1115
* Verdict: Accepted
* Submission Date: 2014-09-25 19:57:34
* Time: 28MS
* Memory: 1676KB
*/
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n % 2 == 0) puts("No");
else
{
n += 2;
while(n % 15 == 0) n /= 15;
while(n % 3 == 0) n /= 3;
while(n % 5 == 0) n /= 5;
if(n == 1) puts("Yes");
else puts("No");
}
}
return 0;
}