算法有趣的数java代码

本文介绍了一道关于分数序列的编程题目,通过Z字形排列找出特定位置的分数。提供了完整的Java实现代码,并解释了如何根据输入的项号计算出对应的分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有趣的数

描述

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

1

1     3     6  10  15

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

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

3/1 3/2 3/3

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

我们以z字型方法给上表的每项编号。特定方法:第一项是1/1,然后是1/22/13/12/21/31/42/3……。编程输入项号N1<=N<=100000),输出表中第N项。

输入

第一行有一个整数m(0<m<=10),表示有m组测试数据;
随后有m行,每行有一个整数N

输出

输出表中第N

样例输入

4

3

14

7

12345

样例输出

2/1

2/4

1/4

59/99

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

 

public class Test_4_1 {

       publicstatic void main(String[] args) {

              Scannersc=new Scanner(System.in);

              intcount=sc.nextInt();

              int[] shu=new int[count];

              for(int i = 0; i < shu.length; i++) {

                     shu[i]= sc.nextInt();

              }

              for(int a = 0; a < shu.length; a++) {

                    

             

              intsum =0;//在第个数字内项出现此数字

              inti=1 ;

              while(true){

                     sum+=i;

                     if(sum>=shu[a]){

                            break;

                     }

                     i++;

              }

              List<Integer>zheng=new ArrayList<>();

              for(int j = 1; j <= i; j++) {

                     zheng.add(j); 

              }

              List<Integer>fan=new ArrayList<>();

              for(int j = i-1; j >=0; j--) {

                     fan.add(zheng.get(j));   

              }

              for(int j = i-1; j >=0; j--) {

                     if(sum==shu[a]){

                            if(i%2==0){  //偶数1/i开始遍历

                            System.out.println(zheng.get(j)+"/"+fan.get(j));

                            }else{//奇数从i/1开始遍历

                                   System.out.println(fan.get(j)+"/"+zheng.get(j));

                            }

                     }

                     sum--;

              }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值