zoukankan      html  css  js  c++  java
  • 有趣的数-85

    描述

    把分数按下面的办法排成一个数表。

    1/1 1/2 1/3 1/4.....

    2/1 2/2 2/3....

    3/1 3/2 ....

    4/1..... .........

    我们以z字型方法给上表的每项编号。特定方法:第一项是1/1,然后是1/2、2/1、3/1、2/2、1/3、1/4、2/3……。编程输入项号N(1<=N<=100000),输出表中第N项。

     
    输入
    第一行有一个整数m(0<m<=10),表示有m组测试数据; 随后有m行,每行有一个整数N;
    输出
    输出表中第N项
    样例输入
    4
    3
    14
    7
    12345
    样例输出
    2/1
    2/4
    1/4
    59/99

     1 #if 0
     2 //超时了~
     3 #include <stdio.h>
     4 int main()
     5 {
     6     int m, n, sum, i, d;
     7     scanf("%d", &m);
     8     while(m--){
     9 
    10             scanf("%d", &n);
    11             sum = 0;
    12             i   = 0;
    13             while(sum < n){
    14                 
    15                     ++i;
    16                     sum += i;
    17                     
    18             }
    19             if(sum == n)
    20             {
    21                 if(i%2 == 0)
    22                 {
    23                     m = i;
    24                     n = 1;
    25                 }
    26                 else
    27                 {
    28                     m = 1;
    29                     n = i;
    30                 }
    31 
    32             }
    33             else
    34             {
    35                 d = sum-n;
    36                 if(i%2 == 0)
    37                 {                
    38                     m = i-d;
    39                     n = 1+d;
    40                 }
    41                 else
    42                 {
    43                     m = 1+d;
    44                     n = i-d;
    45                 }
    46             }
    47             printf("%d/%d
    ", m, n);
    48     
    49     }
    50     return 0;
    51 }
    52 #endif
    53 
    54 /*ac了,和上面相比,减少了几个判断*/
    55 #include <stdio.h>
    56 int main()
    57 {
    58     int m, n, sum, i;
    59     scanf("%d", &m);
    60     while(m--){
    61 
    62             scanf("%d", &n);
    63             sum = 0;/*存放遍历过的项的个数*/
    64             i   = 0;/*存放每一斜行的项的个数*/
    65             while(sum < n){/*判断在第几斜行*/
    66                 
    67                     ++i;
    68                     sum += i;
    69                     
    70             }
    71             if(i%2 == 0)
    72             {
    73                 printf("%d/%d
    ", n-sum+i, sum-n+1);
    74             }
    75             else
    76             {
    77                 printf("%d/%d
    ", sum-n+1, n-sum+i);
    78             }
    79 
    80     }
    81     return 0;
    82 }
    View Code
  • 相关阅读:
    python3第六天
    python3第五天
    python3第四天
    python3 第三天
    python3第二天
    python3(2)
    python3(1)
    网络通信 & 初识socket
    python中包的语法
    模块语法
  • 原文地址:https://www.cnblogs.com/the-one/p/3280637.html
Copyright © 2011-2022 走看看