description
話說, 小x是個數學大佬,他喜歡做數學題。
有一天,小x想考一考小y。他問了小y一道數學題。題目如下: 對於乙個正整數n,存在乙個正整數t(0
使得的值是正整數。
小x給出n,讓小y給出所有可能的t。如果小y不回答這個神奇的大佬的簡單數學題,他學神的形象就會支離破碎。所以小y求你幫他回答小x的問題。
input
乙個整數n。
output
第乙個數m,表示對於正整數n,存在m個不同的正整數t,
使得是整數。
後面是m個數,每乙個數代表可能的正整數t(按從小到大的順序排列)。
solutions
設這個式子=k,得t=(2k-2)/(2k-1)*n,
然後只需列舉n的因數,判斷2k-1等於因數時,是否為整數。
是,算出t,統計答案即可。
**
1var2
n,m:int64;
3 a:array [0..100001] of
int64;
4procedure
qsort(l,r:longint);
5var
6i,j:longint;
7mid,t:int64;
8begin
9if l>r then
exit;
10 i:=l; j:=r;
11 mid:=a[(l+r) div2];
12repeat
13while a[i]do
inc(i);
14while a[j]>mid do
dec(j);
15if i<=j then
16begin
17 t:=a[i]; a[i]:=a[j]; a[j]:=t;
18inc(i); dec(j);
19end;20
until i>j;
21qsort(i,r);
22qsort(l,j);
23end;24
25procedure
main;
26var
27i:longint;
28k,t:int64;
29begin
30 m:=0;31
for i:=1
to trunc(sqrt(n)) do
32if n mod i=0
then
33begin
34if (i+1) mod
2=0then
35begin
36 k:=(i+1) div2;
37 t:=(k+k-2)*(n div
i);38
if (t>0) and (tthen
39begin
40inc(m);
41 a[m]:=t;
42end;43
end;
44if (n div i+1) mod
2=0then
45begin
46 k:=(n div i+1) div2;
47 t:=(k+k-2)*i;
48if (t>0) and (tthen
49begin
50inc(m);
51 a[m]:=t;
52end;53
end;
54end;55
end;
5657
procedure
print;
58var
59i,t:longint;
60begin
61 t:=0;62
for i:=1
to m-1
do63
if a[i]=a[i+1] then
64inc(t);
65 write(m-t);
66for i:=1
to m do
67if a[i]<>a[i+1] then
68 write('
',a[i]);
69end;70
71begin
72 assign(input,'
math.in');
73 assign(output,'
math.out');
74reset(input);
75rewrite(output);
76readln(n);
77main;
78 qsort(1
,m);
79print;
80close(input);
81close(output);
82end.
5791 NOIP2008模擬 階乘
description 有n個正整數a i 設它們乘積為p,你可以給p乘上乙個正整數q,使p q剛好為正整數m的階乘,求m的最小值。input 共兩行。第一行乙個正整數n。第二行n個正整數a i output 共一行 乙個正整數m。solutions 可以把p分解質因數,假設p ai bi ai為質...
noip2008 ISBN號碼 (模擬)
a1163.isbn號碼 時間限制 1.0s 記憶體限制 256.0mb 總提交次數 691ac次數 268 平均分 62.95 將本題分享到 檢視未格式化的試題 提交試題討論 試題 noip2008 普及組 問題描述 每一本正式出版的圖書都有乙個isbn號碼與之對應,isbn碼包括9位數字 1位識...
5809 NOIP2008模擬 數羊
description 牧羊人a和牧羊人b總是很無聊,所以他們要玩乙個遊戲。a有a隻羊,b有b隻羊。他們想要知道a b的因子和是多少。這就很為難兩個牧羊人了,由於答案太大,你能不能告訴我答案取模9901的數。input 僅一行,為兩個正整數a和b。output a b的因子和對9901的餘數。sol...