zoj 1239 Hanoi Tower Troubles Again! 题解Orz

本来老师让用二分图写...

但!!!

竟然找规律水过去啦hhhhh


题意:给你n个柱子, 你需要从1开始往柱子上穿珠子, 并且在一个柱子上相邻的两个数必须和为平方数;问你最多穿多少珠子;


蒟蒻的我开始手动模拟QAQ;

柱子 -> 最大个数

1 -> 1

2 -> 3

3 -> 7

4 -> 11

5 -> 17


规律已出:

设f[n]表示n个柱子最多穿的数字个数;

f[i] = f[i-1] + i + i % 2;!!!!!

事实证明模拟还是有必要的QAQ

有时可以简化问题!!!



代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

int T, n;
int f[51];

int main()
{
	cin>>T;
	f[1] = 1;
	for(register int i=2;i<=50;i++)
	{
		f[i] = f[i-1] + i + (i % 2);
	}
	while(T--)
	{
		scanf("%d",&n);
		printf("%d\n",f[n]);
	}
	return 0;
}


很短是不是啊!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值