QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#108460 | #3161. Another Coin Weighing Puzzle | andrew018gu# | RE | 0ms | 0kb | C++14 | 1.1kb | 2023-05-25 03:57:06 | 2023-05-25 03:57:17 |
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 j = 1; j < 21; j++){
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: 0
Runtime Error
input:
2 1