Kenny_huang @ 2024-02-01 13:21:55
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int r, c, ans;
int k = 1;
while((1 + k) * k / 2 < n) k++;
r = k;
c = n - r * (r - 1) / 2;
// cout << r << " " << c << endl;
for(int i = 1; i <= r - 1; i++) { //计算前r - 1行的和
ans += i * i;
}
for(int i = 1; i <= c; i++) { //从第一列一直加, 每次加r, 直到加到第c列
ans += r;
}
cout << ans << endl;
return 0;
}
by __Rickysun__ @ 2024-02-01 15:04:55
@Mingzhen_Huang 可是你的代码单独输入就可以,我从来没遇到过这种情况,就离谱(有没有一种可能洛谷判题的本质就是循环判断,你的程序放在循环里就错了,我也不知道为什么)
by Kenny_huang @ 2024-02-01 15:19:36
@Rickysun 你发给我的代码里,咱俩输出不一样,但是我自己的代码输出是对的诶
by __Rickysun__ @ 2024-02-01 15:21:36
@Mingzhen_Huang 对,我也在思考这个问题,调试代码的循环里就是错的,但是单独是就是对的,特别的离谱
by Kenny_huang @ 2024-02-01 18:20:33
@Rickysun
#include <iostream>
using namespace std;
int main() {
for(int times = 1; times <= 10000; times++) {
int n = times;
//我的代码
int r = 0, c = 0, ans = 0;
int k = 1;
while((1 + k) * k / 2 < n) k++;
r = k;
c = n - r * (r - 1) / 2;
// cout << r << " " << c << endl;
for(int i = 1; i <= r - 1; i++) { //计算前r - 1行的和
ans += i * i;
}
for(int i = 1; i <= c; i++) { //从第一列一直加, 每次加r, 直到加到第c列
ans += r;
}
cout << ans << " ";
//AC代码
ans = 0;
int coin = 1;
for(int i = 1; i <= n; i++){
n -= i;
ans += coin * coin;
coin++;
}
ans += n * coin;
cout << ans << endl;
}
return 0;
}
/*不知道是不是洛谷的问题,我把我的和ac代码一起运行,循环10000次每个样例都跑一边输出都是一样的,但就是爆零,崩溃了*/
by cryXXXX @ 2024-07-06 21:47:50
ans没出始化