hdu1719

/*
分析:
    恩,吧错吧错,推起来挺有意思的,简单数学,算是找规律吧。
    1和2是源点,其它所有数都是由它俩推出来的,那么拆拆试试:
1、如果一个数n是friend number,那么n=ab+a+b=(a+1)(b+1)-1;
2、而a、b也是friend number,那么n=((c+1)(d+1))((e+1)(f+1))-1;
3、所以,推导最后,n必定等于(1+1)^x*(2+1)^y-1;
4、由于这个n最大才2^30,so~,应该怎么做,就不用再啰嗦了吧~


                                                             2012-12-19
*/











#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int main()
{
	int n;
	while(scanf("%d",&n)!=-1)
	{
		if(n==0)		{printf("NO!\n");continue;}
		if(n==1 || n==2){printf("YES!\n");continue;}

		n++;
		while(!(n%2))	n/=2;
		while(!(n%3))	n/=3;
		if(n==1)	printf("YES!\n");
		else		printf("NO!\n");
	}
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值