90分求助(玄关)

P1795 无穷的序列

@[ycy1124](/user/1199534) 你的复杂度错了,过不了
by IceKylin @ 2024-02-20 10:01:13


@[IceKylin](/user/719767) ?谢谢大佬
by ycy1124 @ 2024-02-20 10:12:45


@[ycy1124](/user/1199534) 改了一遍后不知道还有救吗 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int n,a; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a); int j; for(j=1;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++) { } if(a-j*(j+1)/2==1) { printf("1\n"); } else { printf("0\n"); } } return 0; } ``````
by ycy1124 @ 2024-02-22 09:06:34


@[ycy1124](/user/1199534) 完了完了 ```cpp #include<bits/stdc++.h> using namespace std; int main() { int n,a; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a); int j; if(a<=10000) for(j=1;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else if(a<=20000) for(j=140;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else if(a<=50000) for(j=199;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else if(a<=100000) for(j=313;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else if(a<=200000) for(j=446;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else if(a<=500000) for(j=630;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); else for(j=999;a>j*(j+1)/2&&a-j*(j+1)/2!=1;j++); if(a-j*(j+1)/2==1) printf("1\n"); else printf("0\n"); } return 0; } ``````
by ycy1124 @ 2024-02-22 09:23:30


AC代码: ```cpp #include<cstdio> #include<cmath> using namespace std; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;++i) { int x;//位置 scanf("%d",&x); x--; 求关 if(int(sqrt(x*2))*int(sqrt(x*2)+1)==x*2) printf("1\n");//sqrt(n(n-1))位于n与n-1之间 else printf("0\n"); } return 0; } `````` 求关
by 2023hkm @ 2024-02-22 09:56:23


@[2023hkm](/user/1240717) 谢谢大佬给的思路,已关
by ycy1124 @ 2024-02-23 16:52:35


|