JZOJ 5773. 【NOIP2008模擬】簡單數學題
阿新 • • 發佈:2018-12-11
文章目錄
題目:
分析:
根據上面的式子,我們可以得出為偶數,因為是奇數,而奇數+奇數才等於偶數,故為奇數,同時也為整數 因為是整數,所以是的約數,這樣以來,我們就可以使用的演算法,列舉的約數
程式碼:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<set>
#include<queue>
#include<vector>
#include<map>
#include<list>
#include<ctime>
#include<iomanip>
#include<string>
#include<bitset>
#include<deque>
#include<set>
#define LL unsigned long long
#define h happy
#define ch cheap
using namespace std;
inline LL read() {
LL d=0,f=1;char s=getchar();
while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}
while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}
return d*f;
}
vector<LL> v;
int main()
{
LL n=read();
for(LL i=1;i<= sqrt(n);i++)
{
if(!(n%i))
{
if((n/i)%2) v.push_back(n-i);
if(i!=n/i)
{
LL w=n/i;
if((n/w)%2) v.push_back(n-w);
}
}
}
sort(v.begin(),v.end());
printf("%d",v.size()-1);
if(v.size()>1)
{
printf(" ");
for(int i=1;i<v.size();i++) if(v[i])printf("%llu ",v[i]);
}
return 0;
}