1083 Cantor表

1083 Cantor表

1999年NOIP全国联赛普及组

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 白银 Silver

题目描述 Description

现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的: 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 … 5/1 … … 我们以Z字形给上表的每一项编号。第一项是1/1,然后是1/2,2/1,3/1,2/2,…

输入描述 Input Description

整数N(1≤N≤10000000)

输出描述 Output Description

表中的第N项

样例输入 Sample Input

7

样例输出 Sample Output

1/4

数据范围及提示 Data Size & Hint

见描述

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
 5
 6 int main(int argc, char** argv)
 7 {
 8     int N, k, i;
 9     cin>>N;
10     if(N == 1)
11         cout<<"1/1"<<endl;
12     else
13     {
14         k = (int)floor((sqrt(1+8*N)-1)/2-1e-9)+1;
15         i = N - k*(k-1)/2;
16         if(k%2 == 1)
17             cout<<k-i+1<<‘/‘<<i<<endl;
18         else
19             cout<<i<<‘/‘<<k-i+1<<endl;
20     }
21     return 0;
22 }

难点在于行号K的确定,其余都很简单!即如何用编程表示(sqrt(1+8*N)-1)/2<<k<(sqrt(1+8*N)+1)/2??思考许久方得良方~

时间: 2024-10-06 16:39:34

1083 Cantor表的相关文章

codevs 1083 1083 Cantor表【模拟+二分改进】

题目链接: http://codevs.cn/problem/1083/ 一个模拟题,列表出来就是酱紫: 这样为了找到数据在哪一组,很明显就要二分一下,自己写一个改进的二分,类似STL中的lower_bound... 1 #pragma comment(linker, "/STACK:16777216") //防爆栈 2 #include<iostream> 3 #include<algorithm> 4 #include<cstdio> 5 #in

【1083】code[vs] 1083 Cantor表 1999年NOIP全国联赛普及组

嘿嘿嘿,又是一发水题…… [传送门]:http://codevs.cn/problem/1083/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>原题>>>>>>>>>>>>>>>>>>>>

1083 Cantor表&amp;&amp; 1160 蛇形矩阵

这种题目一般都是画出前进方向,然后找规律即可,要注意特殊情况的考虑 #include<stdio.h> #include<stdlib.h> int main() { int n,i,j,k,x,y,flag=0,sum=0; //建立动态数组 scanf("%d",&n); int **a; a=(int**)malloc(sizeof(int*)*n); if(a==NULL) { printf("Out of memory!\n"

luogu Cantor表

P1482 Cantor表 我并不知道为什么我只得了20分! #include<iostream> #include<cstdio> using namespace std; int gcd(int x,int y) { // int z; if(y==0) return x; else return gcd(y,x%y); } int main() { int a,b,c,d,m,n,k,l,mm,nn; scanf("%d/%d",&a,&b

C语言程序设计100例之(3): Cantor表

例3    Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 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≤10000000) 输出格式 表中的第N项 输入样例 7 输出样例 1/

回档|Cantor表

题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 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  … 5/1  … …     我们以Z字形给上表的每一项编号.第一项是1/1,然后是1/2,2/1,3/1,2/2,… 输入输出格式 Input/output 输入格式: 整数N(1≤N≤10000000)

P1014 Cantor表

洛谷 p1014 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 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 - 5/1 - - 我们以Z字形给上表的每一项编号.第一项是1/1,然后是1/2,2/1,3/1,2/2,- 输入输出格式 输入格式: 整数N(1≤N≤10000000) 输出格式: 表中的第N项 输入输出样例 输入样例#1: 7 输出样

3.Cantor表

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: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 … 5/1 … … 我们以Z字形给上表的每一项编号.第一项是1/1,然后是1/2,2/1,3/1,2/2,… 输入描述 Inpu

codevs1083 Cantor表

题目描述 Description 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 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 - 5/1 - - 我们以Z字形给上表的每一项编号.第一项是1/1,然后是1/2,2/1,3/1,2/2,- 输入描述 Input Description 整数N(1≤N≤10000000) 输出描述 Output Descript