信息学奥赛一本通1100:金币 视频题解
信息学奥赛一本通1100:金币 视频题解(纯数学方法,不用循环)
1|1 = 11
2|2 2 = 22
3|3 3 3 = 33
4|4 4 4 4
5|5 5 5 5 5
6|6 6 6 6 6 6
11+22+33+44+55+6*6 =
sum = x(x+1)(2x+1)/6 -((1+x)*x/2 -n)*6
1|1
2|2 3
3|4 5 6
4|7 8 9 10
5|11 12 13 14 15
6|16 17 18 19 20 21
1->n的和,1->6 ,当x = 6 , 1+2+3+4+5+6 = 21
(1+x)*x/2 = 21 ,求解 x = 6
(1+x)x /2 >= n
xx + x >= 2n
x*x+x-2n>=0
a=1,b=1,c=-2n
x = ceil ( -1.0 + sqrt( 1- 41(-2n) ) / 2 )
#include<bits/stdc++.h>
using namespace std;
//微信请加 14808098 一起快乐学习信息学奥赛
int main() {
int n;
cin>>n;
int jinbi = ceil( (-1.0 + sqrt(4*2*n+1) ) /2.0) ;
// cout<<jinbi<<endl; // 0
int sum = jinbi*(jinbi+1)*(2*jinbi+1)/6 -((jinbi+1)*jinbi/2 - n) * jinbi;
cout<<sum<<endl;
return 0;
}