题目
题意: 给定l-r这些数组成的一个环,每次可以任意选择一段和为x倍数的数都删除,尽可能地删除以后,问最少能留下多少个数。
思路: 如果和是x的倍数,直接0个,否则1个。为什么呢?假设和是sum,sum % x = t,t != 0.因为题干里x<=r+l-1,l-r这些数%x产生的数应该能包含0-x-1,因为x个数就足以覆盖0-x-1,所以把那个数找到,然后不删,其他都能删。
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,k,T;
#define int long long
void solve()
{
int l,r; cin>>l>>r;
cin>>m;
int sum = (r-l+1)*(l+r)/2;
while(m--)
{
int x; cin>>x;
if(sum%x==0) cout<<0<<"\n";
else cout<<1<<"\n";
}
}
signed main(void)
{
T = 1;
cin>>T;
while(T--)
solve();
return 0;
}