题目传送门
一道模拟题目,签到送分题。
您需要的知识
1.while循环
2.for循环
3.一维数组
思路:
Step 1:按题目要求,定义a[],n,m,k
int a[10001];
int n,m,k;
Step 2:输入n,m,k
cin>>n>>m>>k;
Step 3:对于 (60\%) 的数据,(k=0)。
所以先来个判断就能得到60分
如果k==0
就输出n/m
向上取整
小学三年级的知识……
if(k==0)
{
if(n%m==0)cout<<n/m;
else cout<<n/m+1;
}
如果你写到这,就可以得到60分了!
Step 4:如果不是(k=0)怎么办
先加一个else
else
{
}
Step 5:定义2个变量,ste
和cnt
,都归零
int cnt=0;
int ste=0;
这里可以连着写
Step 6:输入a[i]
不赘述了
for(int i=1;i<=k;i++)
cin>>a[i];
Step 7:按照题目方法模拟,也不难,while+for即可
while(ste<n)
{
cnt+=1;
ste+=m;
for(int i=1;i<=k;i++)
if(a[i]==ste)m++;
}
Step 8:输出cnt
,别输出错了!
cout<<cnt;
Step 9:
return 0;
满分代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int a[10001];
int main()
{
int n,m,k;
cin>>n>>m>>k;
if(k==0)
{
if(n%m==0)cout<<n/m;
else cout<<n/m+1;
}
else
{
int cnt=0;
int ste=0;
for(int i=1;i<=k;i++)
cin>>a[i];
while(ste<n)
{
cnt+=1;
ste+=m;
for(int i=1;i<=k;i++)
if(a[i]==ste)m++;
}
cout<<cnt;
}
return 0;
}