zoukankan      html  css  js  c++  java
  • Ordered Fractions usaco

    题目翻译来自http://www.nocow.cn/index.php/Translate:USACO/frac1

    Translate:USACO/frac1

     

    Ordered Fractions顺序的分数


    输入一个自然数N,对于一个最简分数a/b(分子和分母互质的分数),满足1<=b<=N,0<=a/b<=1,请找出所有满足条件的分数。

    描述

    这有一个例子,当N=5时,所有解为:

    0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1

    给定一个自然数N,1<=n<=160,请编程按分数值递增的顺序输出所有解。

    注:①0和任意自然数的最大公约数就是那个自然数②互质指最大公约数等于1的两个自然数。

    格式

    PROGRAM NAME: frac1

    INPUT FORMAT:

    (file frac1.in)

    单独的一行 一个自然数N(1..160)

    OUTPUT FORMAT:

    (file frac1.out)

    每个分数单独占一行,按照大小次序排列

    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
    

    【题解】

    列举--》快排--》输出(注意重复的)

     1 {
     2 ID:fuzhong2
     3 PROG:frac1
     4 LANG:PASCAL
     5 }
     6 var
     7  s,f:array[1..25600] of longint;
     8  z:array[1..25600] of real;
     9  w:real;
    10   n,i,j,p:longint;
    11 procedure com(var x,y:longint);
    12    var
    13    i:longint;
    14    begin
    15    for i:= y div 2 +1 downto 2 do
    16      begin
    17        if (y mod i=0) and (x mod i=0) then begin y:=y div i; x:=x div i; exit; end;
    18      end;
    19      end;
    20 procedure qsort(l,h:longint);
    21 var
    22  i,j,tt:integer;
    23  t,m:real;
    24 begin
    25  i:=l; j:=h;
    26  m:=z[(i+j) div 2];
    27  repeat
    28  while z[i]<m do inc(i);
    29  while m<z[j] do dec(j);
    30    if i<=j then
    31   begin
    32    t:=z[i]; z[i]:=z[j]; z[j]:=t;
    33    tt:=f[i];f[i]:=f[j];f[j]:=tt;
    34 tt:=s[i];s[i]:=s[j];s[j]:=tt;
    35   inc(i); dec(j);
    36   end;
    37   until i>j;
    38  if i<h then qsort(i,h);
    39  if j>l then qsort(l,j);
    40 end;
    41 begin
    42   assign(input,'frac1.in'); reset(input);
    43   assign(output,'frac1.out');rewrite(output);
    44   read(n);
    45   p:=0;
    46   for i:= 1 to n do
    47   for j:=1 to i-1 do
    48     begin
    49     inc(p);
    50     f[p]:=i;
    51     s[p]:=j;
    52     z[p]:=(j/i*10000)div 1;
    53     end;
    54 qsort(1,p);
    55 w:=-1;
    56 writeln('0/1');
    57 for i:= 1 to p do
    58   begin
    59   if z[i]=w then continue else w:=z[i];
    60   com(s[i],f[i]);
    61   writeln(s[i],'/',f[i]);
    62   end;
    63 writeln('1/1');
    64 close(input);
    65 close(output);
    66 end.

    真心写的有点乱

    USER: fu zhongqing [fuzhong2]
    TASK: frac1
    LANG: PASCAL
    
    Compiling...
    Compile: OK
    
    Executing...
       Test 1: TEST OK [0.000 secs, 676 KB]
       Test 2: TEST OK [0.000 secs, 676 KB]
       Test 3: TEST OK [0.000 secs, 676 KB]
       Test 4: TEST OK [0.000 secs, 676 KB]
       Test 5: TEST OK [0.000 secs, 676 KB]
       Test 6: TEST OK [0.000 secs, 676 KB]
       Test 7: TEST OK [0.000 secs, 676 KB]
       Test 8: TEST OK [0.000 secs, 676 KB]
       Test 9: TEST OK [0.000 secs, 676 KB]
       Test 10: TEST OK [0.000 secs, 676 KB]
       Test 11: TEST OK [0.011 secs, 676 KB]
    
    All tests OK.

    Your program ('frac1') produced all correct answers! This is your submission #2 for this problem. Congratulations!

    Here are the test data inputs:

    ------- test 1 ----
    1
    ------- test 2 ----
    2
    ------- test 3 ----
    4
    ------- test 4 ----
    7
    ------- test 5 ----
    10
    ------- test 6 ----
    15
    ------- test 7 ----
    24
    ------- test 8 ----
    50
    ------- test 9 ----
    75
    ------- test 10 ----
    100
    ------- test 11 ----
    160
    
    Keep up the good work!

    Thanks for your submission!

  • 相关阅读:
    Element-ui 中设置input中字符长度并提示
    vue.js如何动态的获取locoalStorage中事先存好的值
    vue中的v-if和v-show的区别详解
    vue.js中ref和$refs的使用及示例讲解
    vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
    flex 如何设置换行flex-wrap
    JS排序之localeCompare( )方法的使用说明及相关案例
    JS—如何按日期对象数组进行排序,然后按时间顺序进行降序排序?
    遇到了编译报错:no method declared with objective-c selector error
    在IT界取得成功应该知道的10件事
  • 原文地址:https://www.cnblogs.com/fuzhongqing/p/2743258.html
Copyright © 2011-2022 走看看