前言
solo发现他参加Online Judge的比赛发挥比较稳定,于是他翻开以往的比赛记录。发现他在每一轮的比赛中他的排名 R 都能够整除参赛的次数 N (包括solo),于是他在每一轮比赛中都会预测他的排名情况,这样可以给自己很大的比赛信息
输入:输入只有一个整数N (0<N<10000000000)
输出:在一行输出中,输出solo参赛可能获得的排名数S,以及有小到大输出每个排名Ri(0<i<S),用空格分开。
示例:
输入:10
输出:4 1 2 5 10
分析:
假设输入n,循环遍历判断符合条件的数字时,需要注意的是应该会有两个数同时能够符合(i 和 n/i);而且循环的临界值应该是n的平方根,最后每次输出一个,从小到大。代码
process.stdin.resume();
process.stdin.SetEncoding('utf-8');
let input = ' ';
process.stdin.on('data' , (data)=>{input += data;});
process.stdin.on('end' , ()=>{
let inputArray = input.split('\n');
let a = Number( inputArray[0] );
let ret = [];
if(a === 1){
console.log('1 1');
return ;
}
if(a%2 === 0){
for(let i=1 ; i<=a/2 ; i++){
if(a%i === 0){
ret.push(i)}}
}else{
for(let i=1 ; i<=(a+1)/2 ; i++){
if(a%i === 0){
ret.push(i)
}
}
}
ret.push(a);
console.log(ret.length + " " + ret.join(" "));
process.exit();
})