QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#108458 | #3161. Another Coin Weighing Puzzle | zaxwellmen# | WA | 142ms | 18980kb | C++20 | 1.1kb | 2023-05-25 03:47:58 | 2023-05-25 03:48:02 |
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;
}
詳細信息
Test #1:
score: 100
Accepted
time: 136ms
memory: 18980kb
input:
2 1
output:
9
result:
ok single line: '9'
Test #2:
score: 0
Accepted
time: 131ms
memory: 18908kb
input:
2 2
output:
17
result:
ok single line: '17'
Test #3:
score: -100
Wrong Answer
time: 142ms
memory: 18960kb
input:
10000 10000
output:
937082346
result:
wrong answer 1st lines differ - expected: '689223145', found: '937082346'