链接
题目描述
对于一个正整数N,若x满足,(N-0.5x)/(N-x)为正整数,则x为N的幸运数。
给出一个N,求出[1,N-1]所有N的幸运数,
先回答个数,在将幸运数从小到大输出。
思路
懒得打LaTeX,直接放题解
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll n, m, num, ans, d[10000005], ans_[100000005];
int main()
{
scanf("%lld", &n);
for(int i = 1; i <= floor(sqrt(n)); ++i)
{
if(i * i == n) d[++num] = i;
else if(n - n / i * i == 0) d[++num] = i, d[++num] = n / i;
}
for(int i = 1; i <= num; ++i)
if(d[i] != n && ((n / d[i]) % 2)) ans++, ans_[++m] = n - d[i];
sort(ans_ + 1, ans_ + m + 1);
printf("%lld ", ans);
for(int i = 1; i <= m; ++i)
printf("%lld ", ans_[i]);
return 0;
}