codeforces715A-Plus and Square Root

题目大意:给你你个特殊的计算器,刚开始的时候计算器屏幕上的数字是2,并且处于level1,我们可以有两种操作:

1.按下“+”,那么屏幕上的数字会加上当前的level;

2.按下“sqrt”,就是开方,但是level会加1,并且要满足开方后的数要整除(level+1);


题目解析:这类题目肯定有很多解,我们只需要找到一个通式就好了,我试了一下,对于level =k而言,首先屏幕上的数字一定是k的倍数,而且要能够开方,必定为k*k的倍数,并且开放后能够整除与k+1,所以一定也是(k+1)*(k+1)的倍数,可能还有一个系数,我们不去管它,直接设为1,于是公式就出来了:

1.当n=1的时候,我们就输出2;

2.当n>=2的时候,我们就得到公式:answer = (i+1)*(i+1)*i-i+1;


以下为AC代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
	int n;
	__int64 i;
	while(scanf("%d",&n)!=EOF)
	{
		printf("2\n");
		for(i=2;i<=n;i++)
			printf("%I64d\n",(i+1)*(i+1)*i-i+1);
	}
	return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值