NYOJ 85. 有趣的数
来源:互联网 发布:java trimend 编辑:程序博客网 时间:2024/05/18 20:07
有趣的数
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
把分数按下面的办法排成一个数表。
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项
3
14
7
12345
样例输出
2/1
2/4
1/4
时间限制:3000 ms | 内存限制:65535 KB
难度:2
描述
把分数按下面的办法排成一个数表。
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项
样例输入
43
14
7
12345
样例输出
2/1
2/4
1/4
59/99
【分析】数学问题+找规律
不难发现,编号和对应的分数是存在规律的。从右上角向左下角看,奇数条斜线上编号自右上角向左下角递减,而偶数条斜线上编号自右上角向左下角递增。因此我们可以计算出第N项所在斜线之前的编号数目之和sum,并确定该编号在第line条斜线上,然后找到编号N与分子分母的对应关系。(例:N=7,则sum=6,line=4,对应的分数为1/4)
#include <stdio.h>int m,N;int main(){int line; //表示N在第几条三角形斜线上 int sum; //N所在斜线前面包含的编号数目之和 int fz,fm; //待求的分子分母 scanf("%d",&m);while(m--){scanf("%d",&N);line=sum=0;while(sum<N) //求解sum与line {line++;sum+=line;}sum-=line; //因为sum多加了line一次,循环结束后要减掉 if(line%2==1) //根据line是奇数还是偶数,确定分子分母 {fz=line-(N-sum)+1;fm=N-sum;} else{fz=N-sum;fm=line-(N-sum)+1;}printf("%d/%d\n",fz,fm);}return 0;}
阅读全文
0 0
- NYOJ 85. 有趣的数
- NYOJ - 有趣的数
- NYOJ 有趣的数
- NYOJ 有趣的数
- nyoj 85 有趣的数
- nyoj-85-有趣的数
- NYOJ--85--有趣的数
- nyoj 85 有趣的数
- nyoj-85-有趣的数
- NYOJ 85题 有趣的数
- NYOJ-85 有趣的数 AC
- nyoj 题目85 有趣的数
- nyoj 85 有趣的数(康托数表)
- nyoj 有趣的数 85 (简单数学规律)
- 有趣的数
- NYOJ85 有趣的数
- 有趣的数
- 85 有趣的数
- Vue 版sticker 贴纸实现
- 用C语言实现通讯录的文件版本
- codeforces Gym
- Spring MVC案例
- 二维数组中的查找
- NYOJ 85. 有趣的数
- CentOS之iptables-yellowcong
- **随便写写(1)——欧几里得算法求最小公约数**
- 基于顺序链表的栈的顺序存储的C风格实现
- JS报错RangeError: Invalid string length
- ZooKeeper教程(一)----Centos7下安装ZooKeeper(单机版)
- Python 序列化JSON串
- 河南理工大学校友会举办《“认识上海”大讲堂》第一期讲座
- KMP算法(C++)