• Ordered Fractions


      Source : Unknown
      Time limit : 3 sec   Memory limit : 32 M

    Submitted : 1227, Accepted: 383

    Consider the set of all reduced fractions between 0 and 1 inclusive with denomin 

    ators less than or equal to N.

    Here is the set when N = 5:

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

    Write a program that, given an integer N between 1 and 160 inclusive, prints the fractions in order of increasing magnitude.

    INPUT FORMAT

    Several lines with a single integer N in each line. Process to the end of file.

    SAMPLE INPUT

    5
    5
    

    OUTPUT FORMAT

    One fraction per line, sorted in order of magnitude. print a blank line after each testcase.

    SAMPLE OUTPUT

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

    这个题开始提交时超时  后来才发现输入输出太多了  改成C语言的输入输出就没有超时了 0.12MS 相差几十倍 这个以后得注意点啊 嘿嘿 难怪曾哥那么喜欢用C语言 我却习惯用C++了 一时改不过来

    View Code
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <fstream>
     4 #include <stdio.h>
     5 using namespace std;
     6 
     7 #define max 170
     8 struct pp
     9 {
    10     int x,y;
    11     double b;
    12 };
    13 
    14 int  judge(int x,int y)
    15 {
    16     int t;
    17     while (y)
    18     {
    19         t=y;
    20         y=x%y;
    21         x=t;
    22     }
    23     return x;
    24 }
    25 bool mycomp(const pp &x,const pp &y)
    26 {
    27     if(x.b<y.b)  return true;
    28     return false;
    29 }
    30 int main()
    31 {
    32 //    ifstream cin("1.txt");
    33 //    ofstream cout("2.txt");
    34 //    freopen("output","w",stdout);
    35     int i,j,k;
    36     int p=0,q;
    37     int temp;
    38     //while (cin>>p)
    39         int m=0;
    40         pp t[max*max];
    41         for(i=1;i<max;i++)
    42         {
    43             for(j=0;j<max;j++)
    44             {
    45                 t[m++].b=1;
    46             }
    47         }
    48         m=0;
    49         for(i=1;i<=170;i++)
    50         {
    51             for(j=i;j<=170;j++)
    52             {
    53                 if(judge(i,j)>1) t[m].b=1;
    54                 else
    55                 {
    56                     t[m].b=i*1.0/j;
    57                     t[m].x=i;
    58                     t[m].y=j;
    59                     m++;
    60                 }                
    61             }
    62         }
    63         sort(t,t+m,mycomp);
    64         while (scanf("%d",&p)!=EOF)
    65     //    while(cin>>p)
    66     {
    67                 //    cout<<"0/1"<<endl;
    68             printf("0/1\n");
    69         for (i=0;i<m;i++)
    70         {
    71             if(t[i].b<1&&t[i].x<=p&&t[i].y<=p) //cout<<t[i].x<<"/"<<t[i].y<<endl;
    72                 printf("%d/%d\n",t[i].x,t[i].y);
    73         }
    74         printf("1/1\n\n");
    75         //cout<<"1/1"<<endl;
    76     //    cout<<endl;
    77     }
    78     return 0;
    79 }

  • 相关阅读:
    配置数据同步
    NET移动设备开发
    计算两个日期之间的工作日数
    ActionScript3.0程序开发工具
    常用JS积累之获取节点高度(基于浏览器)
    推荐40个优秀的免费CSS工具
    #include语法
    CSS3属性boxshadow使用教程
    CSS元素背景透明
    js获取网页高度
  • 原文地址:https://www.cnblogs.com/wujianwei/p/2474008.html
Copyright © 2020-2023  润新知