这道题,可以先模拟一下(我们拿样例1):
那么,每一个总时间值,只要减去前一个的(总时间值-1),就是当前不重复TIME的方法。
而每一个总时间值,则要被前一个所控制,必须以前一个来(前一个>当前,当前=前一个)
代码如下:
#include<bits/stdc++.h>
using namespace std;
int main(){
unsigned long long n,m;
cin>>n>>m;
unsigned long long a,b[2]={0,0};//b只要当前的值和前一个值就够了
unsigned long long ans=0;
for(unsigned long long i=0;i<m;i++){
cin>>a;
b[0]=b[1];
b[1]=(n-1)/(a)+1;//b是文中的a
if(b[1]<b[0])b[1]=b[0];
if(i==0)ans=b[1];
else ans+=b[1]-(b[0]-1);
}
cout<<ans;
怎么样,不难吧?想通了,就对了!