洛谷 P1014 Cantor表 C语言实现

原题地址:P1014 Cantor表 - 洛谷
在这里插入图片描述
其实看见这道题我第一反应是被吓到了。。。。我起初看到每一行这么有规律,但却要按照Z形输出就在想他会不会每一排都按规律输出好,再来找Z形输出的规律,然后按顺序输出。。。
但很快我按照Z形输出的数字写了一部分出来,很快就发现了规律,才发现这是个水题。。。
第一行:1/1
第二行:1/2、2/1
第三行:3/1、2/2、1/3
第四行:1/4、2/3、3/2、4/1
写完后我发现有个很关键的数字,一个是这个数字是这行顺数的第几个、一个是这行倒数的第几个;
然后根据他是单数行还是双数行,来确定分子是顺数还是分母是顺数。
于是乎,这道水题就这么解决了!
AC代码:

#include <stdio.h>
int main()
{
	int i, j, n, m;
	scanf("%d", &i);
	for(j = 0; (1 + j) * j / 2.0 < i; j++); 
	n = j - 1;
	n = (1 + n) * n / 2.0;
	m = (1 + j) * j / 2.0;
	m = m - i + 1;
	n = i - n;
	if(j % 2 == 0)
		printf("%d/%d", n, m);
	else
		printf("%d/%d", m, n);
	return 0;
}  
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值