当前进度
2024-03-13 13:24:09
发布于:广东
51阅读
0回复
0点赞
5AC+5TLE
#include <iostream>
#include <cstdio>
using namespace std;
int a[100005];
int check(int i, int j, int k, int n){
int mi = (i+j)*(i+j)+(j+k)*(j+k)+(k+i)*(k+i);
if(mi == n * 2) return 0;
if(mi < n * 2) return -1;
if(mi > n * 2) return 1;
}
bool sqrt_(int i, int j, int n){
int left = 1, right = n;
while(left <= right){
int mid = (left + right) / 2;
int x = check(i, j, mid, n);
if(x == 0) return 1;
if(x == -1) left = mid + 1;
else right = mid - 1;
}return 0;
}
int f(int n){
int ct = 0;
for(int i = 1; i < n; i++){
for(int j = 1; j <= n; j++){
ct += sqrt_(i, j, n);
}
}return ct;
}
int main(){
int n;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
printf("%d\n", f(i));
}
return 0;
时间复杂度:O(n^3logn)
全部评论 1
啊啊啊啊啊什么鬼题
2024-03-04 来自 广东
0进入我团队以后请改名:复仇者_超级大帅童…瑞*
2024-04-07 来自 浙江
0ok
2024-04-08 来自 广东
0
有帮助,赞一个