先输入每个牛的编号,然后思考什么时候会有两个编号模k后会是同一个数? 那就是这两个数的差刚好为k的倍数。
那这题就能做了,求出所有编号之间的差,这些数的因子都不能做k了。最后跑一遍bool数组,只要为0就能用。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using namespace std; int i,f,o[5000],n; bool flag[1000010]; int main() { ios::sync_with_stdio(false); //freopen("123.in","r",stdin); cin>>n; for(i=1;i<=n;i++) { cin>>o[i]; for(f=1;f<i;f++) flag[abs(o[i]-o[f])]=1; } for(i=n;i<=1000000;i++)//好歹要有n个床吧? if(flag[i]==0) { cout<<i; return 0; } }
然后就并没有处理出因子,只把差对应的flag改了,结果还是对了???不懂,可能数据又水了?
就是这个样子: