博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 264 - Count on Cantor
阅读量:5855 次
发布时间:2019-06-19

本文共 896 字,大约阅读时间需要 2 分钟。

  《算法竞赛入门经典》5.4.1的题目,大意是,给出一个数表,如下:

  第一项是1/1, 第二项是1/2, 第三项是2/1, 第四项是3/1, 第五项是2/2.....给一个正整数n,求第n项。

  设第n个数在第k斜行,则有(k-1)*k/2  + 1  <=  n  <=  k*(k+1)  ==>    (k-1)<= k2 - k + 2 <= 2*n  <= k2 + k < (k+1)2     ==>   k-1 <= sqrt(2*n) < k+1, 因为要k的下界,可以令k = (int)(sqrt(2*n)-1), 从这个值递增枚举。代码如下:

View Code
1 #include 
2 #include
3 4 int main() 5 { 6 int n; 7 while(scanf("%d", &n) != EOF) 8 { 9 int k = (int)(sqrt(2*n)-1);10 while(n > k*(k+1)/2) k++;11 int num = n - (k-1)*k/2;12 int a, b;13 if(k%2)14 {15 b = num;16 a = k + 1 - num;17 }18 else 19 {20 a = num;21 b = k + 1 - num;22 }23 printf("TERM %d IS %d/%d\n", n, a, b);24 }25 return 0;26 }

 

转载于:https://www.cnblogs.com/xiaobaibuhei/archive/2013/05/03/3056981.html

你可能感兴趣的文章
DHCP
查看>>
Live Exchange到Office 365遷移軟件
查看>>
python CST时间转换为本地时间
查看>>
以太坊搭建联盟链详细教程
查看>>
进博会上的人气 AI 黑科技 了解一下?
查看>>
阿里云数据库自研产品亮相国际顶级会议ICDE 推动云原生数据库成为行业标准...
查看>>
山特UPS不间断电源蓄电池放电时间
查看>>
Linux lsof命令详解
查看>>
MySql之主从复制原理
查看>>
使用Splunk整合ESXi主机的日志
查看>>
generic host process for win32 services
查看>>
WebLoginc配置数据源出现Resource Exception
查看>>
常见DOS命令
查看>>
创建虚拟机
查看>>
求一个数二进制位中有多少个 1 的不同解法
查看>>
m3u8文件简介
查看>>
RHEL6 64位系统安装ORACLE 10g 64bit 数据库
查看>>
Profession ASP.NET MVC 2.0 NerdDinner示例可运行源码
查看>>
SVG path
查看>>
jstl
查看>>