当前位置: 代码迷 >> 综合 >> JG-OJ记录100:8:疯狂的程序员
  详细解决方案

JG-OJ记录100:8:疯狂的程序员

热度:93   发布时间:2024-03-07 05:39:54.0
描述

有一个程序员给自己定了个目标,第1天写1个代码,之后两天(第2、3天)里,每天写2个代码;之后3天(第4、5、6天)里,每天写3个代码……当连续N天每天写N个代码后,程序员会在之后的连续N+1天里,每天写N+1个代码。

给定一个天数,问从第一天开始的这些天里,程序员一共写了多少个代码。

输入

第1行是一个正整数n,表示测试案例的数量。

从第2行到第n+1行,每行有1个正整数,表示天数。

输出

针对每组测试案例,输出程序员写了多少个代码。

每组案例输出完都要换行。

样例输入 复制样例

1

3

样例输出

5

HINT

 

解:

 

#include<iostream>
using namespace std;
int main()
{long long int m,sum,JG=0;cin>>m;for(int i=1;i<=m;i++){bool c=0;int n;JG=0;cin>>n;for(int j=1;;j++){sum=((j*(j+1))/2);if(sum>n){c=1;sum=j;break;}if(sum==n){c=0;sum=j;break;}}if(c==0){JG=JG+((sum*(sum+1)*(2*sum+1))/6);}else{int t=0;sum--;for(int j=1;j<=sum;j++){t+=j;}JG=JG+((sum*(sum+1)*(2*sum+1))/6);JG=JG+((n-t)*(sum+1));	}cout<<JG<<endl;}return 0;
}

OR

#include<iostream>
using namespace std;
int main()
{long long int m,sum,JG=0;cin>>m;for(int i=1;i<=m;i++){bool c=0;int n;JG=0;cin>>n;sum=0;for(int j=1;;j++){sum+=j;if(sum>n){c=1;sum=j;break;}if(sum==n){c=0;sum=j;break;}}if(c==0){for(int j=1;j<=sum;j++){JG=JG+(j*j);}}else{int t=0;for(int j=1;j<=sum;j++){t+=j;JG=JG+(j*j);}JG=JG+((n-t)*sum);	}cout<<JG<<endl;}return 0;
}

OR

#include<iostream>
using namespace std;
int main()
{long long int m,sum,JG=0;cin>>m;for(int i=1;i<=m;i++){bool c=0;int n;JG=0;cin>>n;sum=0;for(int j=1;;j++){sum+=j;if(sum>n){c=1;sum=j;break;}if(sum==n){c=0;sum=j;break;}}if(c==0){for(int j=1;j<=sum;j++){JG=JG+(j*j);}}else{int t=0;sum--;for(int j=1;j<=sum;j++){t+=j;JG=JG+(j*j);}JG=JG+((n-t)*(sum+1));	}cout<<JG<<endl;}return 0;
}

三个差别貌似不大,改来改去改出来的,如果发现问题请私聊我,拜托了。。。

  相关解决方案