专栏文章
题解 - Wqh R13 - A
P1000题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mink4a6o
- 此快照首次捕获于
- 2025/12/02 03:43 3 个月前
- 此快照最后确认于
- 2025/12/02 03:43 3 个月前
如果没有代码出现的话,请刷新。
0 分的可能
- 没开 long long。
- 可能为负数。
- 没特判 。
- 输出空格写成换行。
- 没写代码或乱写代码。
- 脑残。
30 分做法 - O()
暴力递推求出每次答案。
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[10000005];
signed main(){
int q,k;
cin>>q>>k;
while(q--){
int n;
cin>>n;
a[1]=5;
for(int i=2;i<=n;i++){
if(i%2==0) a[i]=a[i-1]+1;
else a[i]=a[i-2]+k;
}
cout<<a[n]<<" ";
}
return 0;
}
60 分做法 - O()
在 30 分做法上加上预处理,避免重复计算。
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e7+5;
int a[10000005];
signed main(){
int q,k;
cin>>q>>k;
a[1]=5;
for(int i=2;i<=maxn;i++){
if(i%2==0) a[i]=a[i-1]+1;
else a[i]=a[i-2]+k;
}
while(q--){
int n;
cin>>n;
cout<<a[n]<<" ";
}
return 0;
}
100 分做法 - O()
直接找规律,第 个数分别是 ,推出:
因为 ,所以:
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
int q,k;
cin>>q>>k;
while(q--){
int n;
cin>>n;
if(n%2==0) cout<<6+(n-2)/2*k<<" ";
else cout<<5+(n-1)/2*k<<" ";
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...