题目

  阴天傍晚车窗外
  未来有一个人在等待
  向左向右向前看
  爱要拐几个弯才来
  我遇见谁会有怎样的对白
  我等的人他在多远的未来
  我听见风来自地铁和人海
  我排着队拿着爱的号码牌

 

  城市中人们总是拿着号码牌,不停寻找,不断匹配,可是谁也不知道自己等的那个人是谁。可是燕姿不一样,燕姿知道自己等的人是谁,因为燕姿数学学得好!燕姿发现了一个神奇的算法:假设自己的号码牌上写着数字S,那么自己等的人手上的号码牌数字的所有正约数之和必定等于S
  所以燕姿总是拿着号码牌在地铁和人海找数字(喂!这样真的靠谱吗)可是她忙着唱《绿光》,想拜托你写一个程序能够快速地找到所有自己等的人。
  (莫名唱了起来= =)

INPUT

  输入包含k组数据(k<=100)对于每组数据,输入包含一个号码牌S(S<=10^9)

OUTPUT

  对于每组数据,输出有两行,第一行包含一个整数m,表示有m个等的人,第二行包含相应的m个数,表示所有等的人的号码牌。
  注意:你输出的号码牌必须按照升序排列。

SAMPLE

INPUT

42

OUTPUT

3
20 26 41

 

解题报告

考试的时候,一看就知道A不了,打了个极其暴力的程序= =

 1 inline void find(long long x){
 2     int ret(0);
 3     for(int i=2;i*i<=x;i++){
 4         if(x%i==0)
 5             ret+=i,ret+=x%i;
 6         if(i*i==x)
 7             ret-=i;
 8     }
 9     if(ret==s)
10         ans++;
11 }
View Code

相关文章: