description
輸入乙個自然數n
請寫乙個程式來增序輸出分母小於等於n的最簡真分數
input
單獨的一行 乙個自然數n(1..160)
output
每個分數單獨佔一行
最後一行有回車
sample input
5
sample output
0/1
1/5
1/4
1/3
2/5
1/2
3/5
2/3
3/4
4/5
1/1
解題思路:先讀入n,用i
從2到n
迴圈,用j從
1到i-1迴圈,如果i和
j是互質關係,就把它儲存進陣列,然後對儲存進去的分數進行排序,最後按要求輸出即可。
程式:
var
a:array[0..10000,1..2] of longint;
n:longint;
procedure init;
var
f:array[1..200]of boolean;
i,j:longint;
begin
fillchar(f,sizeof(f),true);
readln(n);
for i:=2 to n do
if f[i] then
begin
j:=i*2;
while j<=n do
begin
f[j]:=false;
j:=j+i;
end;
end;
end;
procedure qsort(l,r:longint);
var
i,j:longint;
k:real;
begin
if l>=r then exit;
i:=l;
j:=r;
k:=a[(i+j) div 2,1]/a[(i+j) div 2,2];
repeat
while a[i,1]/a[i,2]
while a[j,1]/a[j,2]>k do dec(j);
if i<=j then
begin
a[0]:=a[i];a[i]:=a[j];a[j]:=a[0];
inc(i);dec(j);
end;
until i>j;
qsort(i,r);
qsort(l,j);
end;
procedure pai(x:longint);
var
i,j,k:longint;
begin
for i:=1 to x do
begin
k:=0;
for j:=1 to x-1 do
if a[j,1]/a[j,2]>a[j+1,1]/a[j+1,2] then
begin
a[0]:=a[j];a[j]:=a[j+1];a[j+1]:=a[0];
k:=1;
end;
if k=0 then exit;
end;
end;
function pd(x,y:longint):boolean;
var
i,z:longint;
begin
if x>y then z:=x
else z:=y;
for i:=2 to z do
if (x mod i=0)and(y mod i=0) then exit(false);
exit(true);
end;
procedure main;
var
i,j,ans:longint;
begin
ans:=0;
writeln('0/1');
for i:=2 to n do
for j:=1 to i-1 do
if (pd(i,j)) or (j=1) then
begin
inc(ans);
a[ans,1]:=j;
a[ans,2]:=i;
end;
pai(ans);
for i:=1 to ans do
writeln(a[i,1],'/',a[i,2]);
writeln('1/1');
end;
begin
init;
main;
end.
USACO2 1 解題報告
usaco2.1主要內容是圖論。其中有幾道題是要用深搜做的。而另外幾道題則是利用模擬的方法來完成簡單圖論。總體來說難度還是比較小的,算是最基礎的演算法吧。uasco 題解思路 可以列舉分子和分母,然後判斷他們的最小公約數是不是1 1 其實就是判斷是否互質 如果是的話就將這個分數加入到結構體裡面,儲存...
USACO 2 1 健康的好斯坦奶牛 DFS
description 農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。input 第1行 乙個整數v ...
USACO 2 1 健康的好斯坦奶牛 DFS
description 農民john以擁有世界上最健康的奶牛為驕傲。他知道每種飼料中所包含的的牛所需的最低的維他命量是多少。請你幫助農夫餵養他的牛,以保持他們的健康,使餵給牛的飼料的種數最少。給出牛所需的最低的維他命,輸出餵給牛需要哪些種類的飼料,且所需的種類數最少。input 第1行 乙個整數v ...