AOJ 762.分数数列

分数数列

Time Limit: 1000 ms   Case Time Limit: 1000 ms   Memory Limit: 64 MB
Total Submission: 11   Submission Accepted: 3

Description

一个数列的前6项为:1/2,3/5,4/7,6/10,8/13,9/15等,试求数列的第n项(n<2000)

Input

输入一个整数n(0< n < 2000)

Output

输出数列的第n项

Sample Input

Original Transformed
1980

Sample Output

Original Transformed
3203/5183

找规律

对于第n项

分子为前n-1项未出现的自然数中最小的一个

分母为分子+n

(真难找,感谢我瑞)

AC代码:GitHub

 1 /*
 2 By:OhYee
 3 Github:OhYee
 4 HomePage:http://www.oyohyee.com
 5 Email:[email protected]
 6 Blog:http://www.cnblogs.com/ohyee/
 7
 8 かしこいかわいい?
 9 エリーチカ!
10 要写出来Хорошо的代码哦~
11 */
12
13 #include <cstdio>
14 #include <algorithm>
15 #include <cstring>
16 #include <cmath>
17 #include <string>
18 #include <iostream>
19 #include <vector>
20 #include <list>
21 #include <queue>
22 #include <stack>
23 #include <map>
24 using namespace std;
25
26 //DEBUG MODE
27 #define debug 0
28
29 //循环
30 #define REP(n) for(int o=0;o<n;o++)
31
32 const int maxn = 6000;
33 bool Has[maxn];
34 bool Do() {
35     int n;
36     if(scanf("%d",&n) == EOF)
37         return false;
38     memset(Has,false,sizeof(Has));
39     int last = 1;
40     for(int i = 1;i <= n;i++) {
41         int j;
42         for(j = last;Has[j];j++);
43         Has[j] = true;
44         Has[j + i] = true;
45         last = j;
46         if(i == n)
47             printf("%d/%d\n",j,j + i);
48     }
49     return true;
50 }
51
52 int main() {
53     while(Do());
54     return 0;
55 }
时间: 2024-10-14 12:33:51

AOJ 762.分数数列的相关文章

C语言笔试经典--求分数数列的和

题目: 求数组的和 2   3/2   5/3   8/5  13/8   21/13  ... 求前20项的和 //求分数数列的和 #include<stdio.h> // 2/1 3/2 5/3 8/5 13/8 ... int main() { float z=2; float m=1; float sum=0; int i=0; float a; while(i<20) //将数值累加 { sum+=z/m; a=z; z=z+m; m=a; i++; } printf(&quo

Python 递归计算分数数列

C语言的课后习题 求数列:2/1,3/2,5/3,8/5,13/8,21/13,...前50项的和 数列规律: 第二项的分母是[前一项分子] 第二项的分子是[前一项分子与分母的和] from fractions import Fraction def fn(x): """ 计算每一项的值 """ time = 1 fz = 2 fm = 1 if x == 1:return fz / fm #if x == 1:return Fraction(f

黑马程序员——经典C语言程序设计100例

1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题

Python 趣味百题

趣味整数 1 不重复的3位数 -易 2 水仙花数 -易 3 完全数 -中 4 相亲数 -中 5 黑洞数 -中 6 勾股数 -易 7 自守数 -易 8 3位反序数 -中 趣味素数 1 素数 -中 2 孪生素数 -中 3 金蝉素数 -中 4 可逆素数 -中 5 回文素数 -中 6 平方回文素数 -中 7 梅森尼数 -中 8 哥德巴赫猜想 -中 9 等差素数数列 -中 趣味图形 1 回型矩阵 -中 2 九九乘法表 -易 3 杨辉三角 -易 数学问题 1 天平秤物 -难 2 黑色星期五 -易 3 存钱问

NBU 水水更健康 (二)

前言:唉,刚考完物理,只求30分T=T 字母个数统计 #include<stdio.h> #include <string.h> void main() { char x[1000]; int y,i,sum=0; gets(x); y=strlen(x); for(i=0;i<=y;i++) { if(x[i]>='a'&&x[i]<='z'||x[i]>='A'&&x[i]<='Z') sum++; } printf

2019.9.10附加题while练习

题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间时,高于20万元的部分,可提成5%:高于40万元的部分,可提成3%.从键盘输入当月利润,求应发放奖金总数? l = int(input('your profit:')) if l < 10: print('your bonus is:',(l * 0.1)) elif 10 < l < 2

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

/** * @author 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和. */ public class Sum { public static void main(String[] args) { double a = 1, b = 1, c = 0, s = 0; for (int i = 0; i < 20; i++) { c = a + b; s = s + c / a; b = a; a = c; } System.out.pri

有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。

题目描述 输入 N 输出 数列前N项和 样例输入 10 样例输出 16.48 代码:#include<stdio.h>int main(){    int i,N;    double c=0,a=2.0,b=1.0,t,sum=0;         scanf("%d",&N);    for(i=0;i<N;i++)    {           c=a/b;        sum=sum+c;        t=a;        a=a+b;     

一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

public class FractionAdd { public static void main(String[] args) { double sum = 0; double n1 = 1, n2 = 2, sn = 0;// 经分析,分子分母都为斐波那契数列 for (int i = 1; i <= 20; i++) {// 数列前20项,循环20次 sum += n2 / n1; sn = n1 + n2; n1 = n2; n2 = sn; } System.out.println(