Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

meiyong

Posted by 994825354 at 2016-03-18 18:56:53 on Problem 1019
/* ********************************
Author			: danmu
Created Time	: 2016年03月18日 星期五 17时07分21秒
File Name		: pku1019.cpp

Vim Command
copy -> yy
paste -> p P
del this line -> dd
Ctrl-Z -> u U
copy into system -> "+y
******************************** */

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
#include <list>
#include <map>
#include <set>

#define ULL unsigned long long
#define PI 3.1415926535
#define INF 0x3f3f3f3f
#define LL long long
#define eps 1e-8

using namespace std;

LL digit[50000],sum[50000]; 
void init()
{
	sum[0]=digit[0]=0;
	for(int i=1;i<50000;++i)
	{
		int tmp1=10,tmp2=1;
		if(i/tmp1)
		{
			++tmp2;
			tmp1*=10;
		}
		digit[i]=digit[i-1]+tmp2;
		sum[i]=sum[i-1]+digit[i];
		if(sum[i]>=2147483647) break;
	}
	printf("%d %lld\n",i,sum[i]);
}
int main()
{
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
	int t;
	init();
	scanf("%d",&t);
	while(t--)
	{
		LL l=0,r=2147483647,i;
		scanf("%lld",&i);
		while(r-l>1)
		{
			LL mid=(l+r)/2;
			if(mid*(mid+1)/2<=i)
				l=mid;
			else r=mid;
		}
		if(i-l*(l+1)/2)
			printf("%lld\n",i-l*(l+1)/2);
		else
			printf("%lld\n",l);
	}	
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator