题目链接
题目意思
(1)、定义1和2是朋友数
(2)、假设a和b是朋友数,那么a*b+a+b也是朋友数
满足上述两个条件的数为朋友数。
现在给你n个数,让你判断这n个数是不是朋友数。
解题思路
假设c=a*b+a+b。那么根据(a+1)(b+1)=a * b+a+b+1,可知c+1如果能够被a+1和b+1除尽,那么c+1就是朋友数。又由于1和2是给定的朋友数,那么如果c+1除以2或者3等于1就可以判断c是朋友数了。
代码部分
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n==0)
{
cout<<"NO!"<<endl;
continue;
}
int t=n+1;
while(t%2==0||t%3==0)
{
if(t%2==0)
{
t/=2;
continue;
}
else
{
t/=3;
continue;
}
}
if(t==1)
cout<<"YES!"<<endl;
else
cout<<"NO!"<<endl;
}
return 0;
}