QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#108457 | #3161. Another Coin Weighing Puzzle | andrew018gu# | WA | 142ms | 19096kb | C++14 | 1.1kb | 2023-05-25 03:46:18 | 2023-05-25 03:46:20 |
Judging History
answer
#include <vector>
#include <iostream>
#define MOD 998244353
#define MAXN 1000000
using namespace std;
int m, k;
long long dp[1000001];
long long mpowers[1000001];
int main(){
cin >> m >> k;
long long power2[21];
dp[0] = 0;
for(int i = 1; i <= 2 * MAXN + 1; i += 2){
power2[0] = i;
for(int i = 1; i < 21; i++){
power2[i] = (power2[i - 1] * power2[i - 1]) % MOD;
}
int t = m;
long long ans = 1;
for(int j = 0; j < 21; j++){
if(t % 2 == 1){
ans *= power2[j];
}
t/=2;
}
mpowers[i/2] = ans;
if(i > 1){
dp[i/2] = (MOD + mpowers[i/2] - mpowers[i/2 - 1]) % MOD;
}
}
for(int i = 1; i <= MAXN; i++){
int j = 2;
while(i * j <= MAXN){
dp[i * j] += (MOD - dp[i]);
dp[i * j] %= MOD;
j++;
}
}
long long ans = 0;
for(int i = 1; i <= k; i++){
ans += dp[i];
ans %= MOD;
}
cout << ans + 1 << endl;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 137ms
memory: 19036kb
input:
2 1
output:
9
result:
ok single line: '9'
Test #2:
score: 0
Accepted
time: 130ms
memory: 18984kb
input:
2 2
output:
17
result:
ok single line: '17'
Test #3:
score: -100
Wrong Answer
time: 142ms
memory: 19096kb
input:
10000 10000
output:
937082346
result:
wrong answer 1st lines differ - expected: '689223145', found: '937082346'