因为任意一个friend number可以由两个friend
number
设F=ab+a+b=ab+a+b+1-1=(a+1)*(b+1)-1,即所有的朋友数都可以写成f=(a+1)*(b+1)-1的样子;
假设 a=(c+1)*(d+1)-1;b=(e+1)*(f+1)-1;
得到F=ab+a+b=(c+1)*(d+1)*(e+1)*(f+1)-1;而efcd分别为b和a的下一阶的朋友数,还可以写成c=(c1+1)*(c2+1)-1的样子,soF=()()()()()()()()-1;依次降阶,最终会发现()里都降到最低阶,即(1+1)or(2+1)
so:
ab+a+b=((1+1)^x)*((1+2)^y)-1
就把题目转化为一个数如果过能写成 (2^x)*(3^y)-1 那他就是一个friend number!
接下来就很简单了!
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
}