2000.cpp

来自「北大acm的部分题目答案。绝少水题。均是本人自行求解并通过。」· C++ 代码 · 共 47 行

CPP
47
字号
#include<iostream>
using namespace std;

int nsq[201];
int mon[201],an[30];

void ditui()
{
	int i;
	nsq[0]=0;
	mon[0]=0;
	for(i=1;i<=200;i++)
	{
		nsq[i]=nsq[i-1]+i;
		mon[i]=mon[i-1]+i*i;
	}
}

//天数最多是10000
int check(int x)//返回n
{
	int i;
	for(i=0;i<=200;i++)
		if(x==nsq[i])return i;
		else if(x>nsq[i-1]&&x<nsq[i])return i;
}

int count(int d,int x)
{
	return mon[d-1]+(x-d*(d-1)/2)*d;
}

int main()
{	int i,d,k,day[30];
    k=0;
	ditui();
	cin>>day[k];
	while(day[k])
	{
		d=check(day[k]);
		an[k]=count(d,day[k]);
		cin>>day[++k];
	}
	for(i=0;i<k;i++)
		cout<<day[i]<<" "<<an[i]<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?