QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#547711#6512. Completely Multiplicative Functionrotcar07WA 28ms7700kbC++14823b2024-09-05 08:14:232024-09-05 08:14:24

Judging History

你现在查看的是最新测评结果

  • [2024-09-05 08:14:24]
  • 评测
  • 测评结果:WA
  • 用时:28ms
  • 内存:7700kb
  • [2024-09-05 08:14:23]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
constexpr int maxn=1e6+5;
int f[maxn],pr[maxn],g[maxn];
int main(){
    int t;cin>>t;
    while(t--){
        int n,k;cin>>n>>k;
        if((n-k)&1){cout<<"-1\n";continue;}
        for(int i=1;i<=n;i++) g[i]=f[i]=1,pr[i]=0;
        int cur=n;
        for(int i=2;i<=n;i++)if(!pr[i]){
            int cnt=cur-g[i]*2;g[i]=-g[i];
            for(int j=i+i;j<=n;j+=i){
                cnt-=g[j];g[j]=g[j/i]*g[i];
                cnt+=g[j];
						pr[j]=1;
            }
            if(abs(cur-k)>abs(cnt-k)){
                for(int j=i;j<=n;j+=i) f[j]=g[j];
                cur=cnt;
            }
            else{
                for(int j=i;j<=n;j+=i) g[j]=f[j];
            }
        }
        for(int i=1;i<=n;i++) cout<<f[i]<<' ';cout<<'\n';
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 7700kb

input:

4
4 2
10 0
10 1
10 10

output:

1 -1 1 1 
1 -1 1 1 1 -1 -1 -1 1 -1 
-1
1 1 1 1 1 1 1 1 1 1 

result:

ok ok (4 test cases)

Test #2:

score: -100
Wrong Answer
time: 28ms
memory: 7664kb

input:

11475
1 0
1 1
2 0
2 1
2 2
3 0
3 1
3 2
3 3
4 0
4 1
4 2
4 3
4 4
5 0
5 1
5 2
5 3
5 4
5 5
6 0
6 1
6 2
6 3
6 4
6 5
6 6
7 0
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 0
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 0
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 0
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
11 0
11 1
11 2
11 3
11...

output:

-1
1 
1 -1 
-1
1 1 
-1
1 -1 1 
-1
1 1 1 
1 -1 -1 1 
-1
1 -1 1 1 
-1
1 1 1 1 
-1
1 -1 -1 1 1 
-1
1 -1 1 1 1 
-1
1 1 1 1 1 
1 -1 1 1 -1 -1 
-1
1 -1 1 1 1 -1 
-1
1 1 1 1 -1 1 
-1
1 1 1 1 1 1 
-1
1 -1 1 1 -1 -1 1 
-1
1 -1 1 1 1 -1 1 
-1
1 1 1 1 -1 1 1 
-1
1 1 1 1 1 1 1 
1 -1 1 1 -1 -1 1 -1 
-1
1 -1 1 1 ...

result:

wrong answer sum of f is not k (test case 40)