1.设有N个不同整数的数列:例如N=4时,有4个不同整数的数列为17,4,16,5。数列中的第1个数17,比它后面的三个数都大,则称数17的逆数为3。数列中的第2个数4比它后面的数都小,则称数4的逆数为0。同时记数列中全部逆数的和称为数列的逆数。上例中,数列17,4,16,5的逆数:为3+0+1+0=4。当给出N个不同整数的数列后,求出此数列的逆数。如输入N=5,35 17 8 6 25,则输出7 。
2.阶乘是数学中的一种运算,N的阶乘表示为:N!=1*2*3*4*……*N,编写程序,根据一个给出的N,求得其阶乘值中所有数字之和P。并判断P是否为素数。
[输入输出]
输入:键盘输入一个自然数N(1<=N<=12)。
输出:N的阶乘值的所有数字之和P,若P为素数输出“T”,否则输出“F”。
[样例1] [样例2]
输入:5 输入:12
输出:3□T 输出:27□F
3.给定一行整数,请把这一行整数从小到大排序(整数个数小于1000)。
输入文件:PX。IN,包括一行数据,为若干个整数。输出文件:PX。OUT,包括一行从小到大的整数序列,每两个整数用空格分开。
样例:PX。IN
8 2 3 4 6 1 7 9 3
PX。OUT
1 2 3 3 4 6 7 8 9 9
4.聪明的囚犯:传说从前有一个残暴的国王,喜欢杀戮百姓。有一次,他抓到30个百姓并要一一杀掉。在这30个百姓中间有一个聪明人,他站出来对国王说:“请国王打发慈悲,赦免两个人不死。”国王问:“赦免哪两个人不死?”那个聪明人回答说:“我们30个人围成一圈,从1开始报数,凡数到5的人就拉出去杀掉,剩下的人继续从1开始报数,循环反复,直到剩下两个人为止,这两个人被赦免。”国王一听很有意思,就同意了聪明人的建议,叫这30个百姓围成一圈,依依报数,凡数到5的就杀掉。最后只剩下两个人没有被杀掉,而聪明人就是其中之一。编写程序,由计算机判断一下,聪明人要站在什么位置,才能躲过这场屠杀。
若有人全解出这4道题,定有悬赏。(+100~+200)
(n-1)*n/2
å°±æ¯æ举æ¯ä¸ªæ°
ç¶åçå®åé¢æå¤å°ä¸ªæ°æ¯å®å¤§å!
æ°æ®å°çè¯å¾å®¹æè¿ç!
å°±åè¿æ ·:
for i:=n downto 1 do
for j:=i+1 to n do
if a[i]>a[j] then inc(f[i]);
ans:=0;
for i:=1 to n do ans:=ans+f[i];
æ°æ®å¤§çè¯å°±ç¨ä¼å
设æ°å为
a b c d e f
设f>d>e
æ以dçéæ°ä¸º1
设c>dé£ä¹cçéæ°å°±æ¯2
å¯è§,è¥dçéæ°ä¸ºn
å½c>dæ¶,cçéæ°å°æ¯n+1
ä¸è¿°çæ¯ç²ç¥çè¯æ
ä¸å¤ç²¾ç¡®
ä½æ¯å¾é¾æåè¯æ
åæ£éä¿ææ
å°±æ¯å©ç¨ä¸çå¼çä¼ éæ§å
æ以:
for i:=n downto 1 do
for j:=i+1 to n do
if a[i]>a[j] then begin
f[i]:=f[j]+1;
break;
end;
ans:=0;
for i:=1 to n do ans:=ans+f[i];
第äºé¢12!ä¸å¤§
å®å ¨å¯ä»¥ç´æ¥ç®åºæ¥
ç¶å转æå符串
ç¶åéä½è½¬ä¸ºæ°åå èµ·æ¥
ç¶åå¤æè´¨æ°å°±æ¯äºå
k:=1;
for i:=1 to n do k:=k*i;
str(k,s);
x:=0;
for i:=1 to length(s) do begin
val(s[i],j);
x:=x+j;
end;
write(x,' ');
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then begin
writeln('F');
halt;
end;
writeln('T');
halt表示å°æ´ä¸ªç¨åºç»æ
æ以ä¸ä¸é¢çè¾åºTä¸å²çª
å¦æ没æè¿å°ifè¯å¥éé¢
é£ä¹å°±æ¯OKå
æ以ä¸é¢è¾åºå°±å¯ä»¥äº
ä¸å欢çèªå·±æbooleanç±»åçæ è®°
第ä¸é¢æç®å
ä¸ä¸ªå¿«æå°±æå®äº
æå¼±çè¯å泡ä¹å¯ä»¥å
å¿«æ:
proccedure qsort(x,y:longint);
var i,j,mid:longint;
begin
i:=x;j:=y;
mid:=a[(x+y)div 2];
repeat
while a[x]<mid do inc(x);
while a[y]>mid do dec(y);
if x<=y then begin
a[0]:=a[x];
a[x]:=a[y];
a[y]:=a[0];
inc(x);dec(y);
end;
until x>y;
if i<y then qsort(i,y);
if x<j then qsort(x,j);
end.
第åé¢ç±»ä¼¼çº¦ç夫ç¯
ç«çä½ç½®æ¯å«æè´¨å æ°5æå¤ä¸å°äºnçæ°
i:=1;
repeat
i:=i*5;
until i>n;
i:=i div 5;
iå°±æ¯çæ¡
æå¥½ä½ è¦è®°å¾ä½ 说è¿è¦æ¬èµ100~200!
ä¸ç¶RPä¼éä½ç!
var
n,i,j,ans:integer;
a:array[1..10000]of integer;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then inc(ans);
writeln(ans);
end.
2.
var
n,i,p:integer;
s:longint;
st:string;
begin
read(n);
s:=1;for i:=2 to n do s:=s*i;
str(s,st);
for i:=1 to length(st) do p:=p+ord(st[i])-48;
for i:=2 to sqrt(p) do
if p mod i=0 then begin writeln(p,' F');halt;end;
writeln(p,' T');
end.
3.由于元素只有1000个,O(n^2)的算法就能过
var
n,i,j,t:longint;
a:array[1..1000]of longint;
begin
assign(input,'PX.in');reset(input);
assign(output,'px.out');rewrite(output);
while not(eof) do
begin
inc(n);
read(a[n]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin t:=a[i];a[i]:=a[j];a[j]:=t;end;
for i:=1 to n-1 do write(a[i],' ');writeln(a[n]);
close(input);close(output);
end.
4.
var i,n:longint;
begin
n:=30;
i:=1;
repeat
i:=i*5;
until i>n;
i:=i div 5;
writeln(i,' ',i div 5);
end.
自己写的,一定加分哦
program temp;
var
n,i,j,t:longint;
a:array[1..1000]of longint;
begin
assign(input,'PX.in');reset(input);
assign(output,'px.out');rewrite(output);
while not(eof) do
begin
inc(n);
read(a[n]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin t:=a[i];a[i]:=a[j];a[j]:=t;end;
for i:=1 to n-1 do write(a[i],' ');writeln(a[n]);
close(input);close(output);
end.