QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#499616 | #6728. To the Park | buzhijingdi | TL | 2ms | 6384kb | C++14 | 1.1kb | 2024-07-31 16:20:25 | 2024-07-31 16:20:26 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
using namespace std;
int vis[100010];
int pri[100000];
int ispri[100010];
int a[100010];
void solve()
{
memset(a,0,sizeof a);
int n;
cin>>n;
if(n<4){cout<<0<<" "<<endl;
return ;}
int cnt=0;
if(n>=4)for(int i=n;i>=2;i--){
if(!ispri[i]){
for(int j=(i+1)/2;j>=2;j--){
if(i%j==0){
a[++cnt]=i;
a[++cnt]=j;
break;
}
}
}
}
cout<<n/2-1<<" ";
for(int i=cnt;i>=1;i--)cout<<a[i]<<" ";
cout<<endl;
}
signed main(){
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int t;
cin>>t;
int n=100010;
int cnt=0;
for(int i=2;i<=n;i++){
if(!vis[i]){
ispri[i]=1;
pri[++cnt]=i;
vis[i]=1;
for(int j=1;i*pri[j]<=n;j++){
vis[i*pri[j]]=1;
if(i%pri[j]==0)break;
}
}
}
while(t--)
solve();
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 6384kb
input:
3 1 4 6
output:
0 1 2 4 2 2 4 3 6
result:
ok 4 cases
Test #2:
score: -100
Time Limit Exceeded
input:
1007 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
output:
0 0 0 1 2 4 1 2 4 2 2 4 3 6 2 2 4 3 6 3 2 4 3 6 3 2 4 3 6 3 9 4 2 4 3 6 3 9 5 10 4 2 4 3 6 3 9 5 10 5 2 4 3 6 3 9 5 10 5 2 4 3 6 3 9 5 10 6 2 4 3 6 3 9 5 10 7 14 6 2 4 3 6 3 9 5 10 7 14 5 15 7 2 4 3 6 3 9 5 10 7 14 5 15 8 16 7 2 4 3 6 3 9 5 10 7 14 5 15 8 16 8 2 4 3 6 3 9 5 10 7 14 ...