标签:数学
题链:http://acm.hdu.edu.cn/showproblem.php?pid=1719
3 13121 12131
YES! YES! NO!
题意:1和2是友好数,如果a,b是友好数,那么a*b+a+b也是友好数。
做法:
friend=a*b+a+b=a*b+a+b+1-1=(a+1)*(b+1)-1
假设a=(c+1)*(d+1)-1 b=(e+1)*(f+1)-1
那么friend=(c+1)*(d+1)*(e+1)*(f+1)-1
然后可以把一个friend数通过这样,不断带入分解,最后肯定是 (c+1)*(d+1)*(e+1)*(f+1)*(g+1)*(h+1)*(i+1)*.....-1这种形式,分解到最后,就是里面字母全是1或者2了。
然后可以得任何一个friend=2^n+3^m-1;
所以某个数加1后,如果质因数只有2和3,那么这个数就是friend数。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <limits.h> #include <malloc.h> #include <ctype.h> #include <math.h> #include <string> #include <iostream> #include <algorithm> using namespace std; #include <stack> #include <queue> #include <vector> #include <deque> #include <set> #include <map> #define INF 999999999 #define eps 0.00001 #define LL __int64 #define pi acos(-1.0) int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==0) { printf("NO!\n"); continue; } n++; while(n%2==0) n/=2; while(n%3==0) n/=3; if(n==1) printf("YES!\n"); else printf("NO!\n"); } return 0; } /* 4 1 2 3 4 1 1 2 3 4 */
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:数学
原文地址:http://blog.csdn.net/u013532224/article/details/46794503