码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 4342

时间:2014-12-06 21:32:41      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   sp   for   div   log   ef   

先确定M的大致范围后即可求。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#define LL __int64
#define N 60000

LL square[N];
LL spre[N];

void init(){
	spre[0]=0; spre[0]=0;
	for(LL i=1;i<N;i++){
		square[i]=i*i;
		spre[i]=spre[i-1]+i*(2*i+1);
	}
}

int main(){
	init();
	int T,n;
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		LL p=(LL)sqrt(n*1.0);
		if(square[p+1]-p-1<n)
		p++;
		LL g=n-(square[p]-p)+square[p];
		LL su=spre[p-1]+p*(g-square[p]+1);
		printf("%I64d %I64d\n",g,su);
	}
}

  

HDU 4342

标签:blog   io   ar   os   sp   for   div   log   ef   

原文地址:http://www.cnblogs.com/jie-dcai/p/4148786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!