【数学】Day8-C

链接

C

题目描述

对于一个正整数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;
}

猜你喜欢

转载自blog.csdn.net/LTH060226/article/details/119737207